У меня есть искровое приложение с очень большим Dataframe. В настоящее время я регистрирую фрейм данных как tempTable, поэтому я могу выполнить несколько запросов к нему.
Когда я использую RDD, я использую persist(StorageLevel.MEMORY_AND_DISK()), что эквивалентно tempTable.
Ниже приведены две возможности, я не думаю, что вариант 2 будет работать, потому что cacheTable пытается кэшировать в памяти, а моя таблица слишком велика, чтобы поместиться в памяти.
DataFrame standardLocationRecords = inputReader.readAsDataFrame(sc, sqlc);
// Option 1 //
standardLocationRecords.persist(StorageLevel.MEMORY_AND_DISK());
standardLocationRecords.registerTempTable("standardlocationrecords");
// Option 2 //
standardLocationRecords.registerTempTable("standardlocationrecords");
sqlc.cacheTable("standardlocationrecords");
Как я могу лучше всего кэшировать свой temptable, чтобы я мог выполнять несколько запросов к нему без необходимости перезагрузки данных.
Спасибо, Натан