Как установить свечу 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