2015-10-01 2 views
2

Ядро искры поддерживает как необработанное хранилище, так и сериализованное кэширование 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

+0

Он работал на вас? –

+0

Да, большое спасибо! – seaman29

ответ

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))