SparkSQL序列化缓存



Spark core支持原始存储和序列化RDD缓存。
这篇好文章解释了这一点。
如果你使用persist -,你可以指定任何级别的缓存,但如果你使用cache,你只能默认使用MEMORY_ONLY,根据这个问题没有序列化。
有人知道如何在SparkSQL中使用MEMORY_ONLY_SER缓存吗?
cacheTable(my_table)将缓存与MEMORY_ONLY选项,而不是MEMORY_ONLY_SER,即使我有spark.storage。在spark环境中,StorageLevel=MEMORY_ONLY_SER .
我的目标是使用SparkSQL的序列化表缓存。什么好主意吗?

尝试如下:

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分支代码
参见1.5.1分支代码(validate with hiveContext.isCached(tableName))

最新更新