Ядро искры поддерживает как необработанное хранилище, так и сериализованное кэширование RDD.
Эта хорошая статья explains это.
Если вы используете persist
- вы можете указать любой из levels кеширования, но если вы используете cache
, вы можете использовать только MEMORY_ONLY
по умолчанию без сериализации в соответствии с этим question.
Кто-нибудь знает, как использовать кеширование MEMORY_ONLY_SER
в SparkSQL?
cacheTable(my_table)
будет кэшировать с опцией MEMORY_ONLY
, а не с MEMORY_ONLY_SER
, даже если у меня есть spark.storage.StorageLevel = MEMORY_ONLY_SER в искровой среде по умолчанию.
Моя цель - использовать сериализованное кэширование таблицы из SparkSQL. Есть идеи?Сериализованное кэширование SparkSQL
2
A
ответ
2
Попробуйте следующее:
Java:
Option<String> tableName = new Some<String>("MyTable");
hiveContext.cacheManager().cacheQuery(hiveContext.table(tableName.get()), tableName, StorageLevel.MEMORY_ONLY_SER());
Scala:
...cacheQuery(sqlContext.table(tableName), Some(tableName), MEMORY_ONLY_SER)
Спарк 1.3.0+:
См 1.3.1 branch code
См 1.5.1 branch code (validate with hiveContext.isCached(tableName)
)
Он работал на вас? –
Да, большое спасибо! – seaman29