Как установить свечу RDD StorageLevel в улей на свече?

В моем улье на искровой работе я получаю эту ошибку:

org.apache.spark.shuffle.MetadataFetchFailedException: отсутствует выходное местоположение для перемешивания 0

спасибо за этот ответ ( Почему задания Spark терпят неудачу с org.apache.spark.shuffle.MetadataFetchFailedException: отсутствует выходное местоположение для shuffle 0 в режиме спекуляции?), я знаю, что это может быть моя задача hiveonspark та же проблема

поскольку hive переводит sql в задание hiveonspark, я не знаю, как установить его в hive, чтобы изменить его задание hiveonspark с StorageLevel.MEMORY_ONLY на StorageLevel.MEMORY_AND_DISK?

спасибо за помощь ~~~~

1 ответ

Ты можешь использовать CACHE/UNCACHE [LAZY] Table <table_name> управлять кешированием. Подробнее

Если вы используете DataFrame, то вы можете использовать persist(...) для указания StorageLevel. Посмотрите на API здесь.,

Помимо настройки уровня хранилища, вы можете оптимизировать и другие вещи. SparkSQL использует другой механизм кэширования, называемый Columnar storage, который является более эффективным способом кэширования данных (так как SparkSQL осведомлен о схеме). Существует различный набор свойств конфигурации, которые можно настроить для управления кэшированием, как подробно описано здесь (это документация последней версии. См. Документацию используемой версии).

  • spark.sql.inMemoryColumnarStorage.compressed
  • spark.sql.inMemoryColumnarStorage.batchSize
Другие вопросы по тегам