SparkSQL序列化缓存

时间:2015-10-01 15:50:33

标签: caching serialization apache-spark-sql

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的序列化表缓存。有什么想法吗?

1 个答案:

答案 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)验证)