Spark核心支持原始存储和序列化RDD缓存
这篇好文here这个。
如果您使用persist
- 您可以指定任意explains个缓存,但如果您使用cache
,则默认情况下您只能使用MEMORY_ONLY
而不会根据此{{{ 3}}。
有谁知道如何在SparkSQL中使用MEMORY_ONLY_SER
缓存?
cacheTable(my_table)
将使用MEMORY_ONLY
选项缓存,而不是MEMORY_ONLY_SER
,即使我在默认情况下在spark环境中有spark.storage.StorageLevel = MEMORY_ONLY_SER。
我的目标是使用SparkSQL的序列化表缓存。有什么想法吗?
答案 0 :(得分: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)
Spark 1.3.0+:
见1.3.1 branch code
请参阅1.5.1 branch code(使用hiveContext.isCached(tableName)
验证)