SparkSQL 序列化缓存
SparkSQL serialized caching
Spark 核心支持原始存储和序列化 RDD 缓存。
这篇好文章explains这篇
如果您使用 persist
- 您可以指定任何 levels of caching, but if you're use cache
you may only use MEMORY_ONLY
by default without serialization according this question.
有谁知道如何在 SparkSQL 中使用 MEMORY_ONLY_SER
缓存?
cacheTable(my_table)
将使用 MEMORY_ONLY
选项进行缓存,而不是 MEMORY_ONLY_SER
,即使我在默认情况下在 spark 环境中有 spark.storage.StorageLevel=MEMORY_ONLY_SER。
我的目标是使用来自 SparkSQL 的序列化 table 缓存。有什么想法吗?
尝试以下操作:
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)
验证)
Spark 核心支持原始存储和序列化 RDD 缓存。
这篇好文章explains这篇
如果您使用 persist
- 您可以指定任何 levels of caching, but if you're use cache
you may only use MEMORY_ONLY
by default without serialization according this question.
有谁知道如何在 SparkSQL 中使用 MEMORY_ONLY_SER
缓存?
cacheTable(my_table)
将使用 MEMORY_ONLY
选项进行缓存,而不是 MEMORY_ONLY_SER
,即使我在默认情况下在 spark 环境中有 spark.storage.StorageLevel=MEMORY_ONLY_SER。
我的目标是使用来自 SparkSQL 的序列化 table 缓存。有什么想法吗?
尝试以下操作:
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)
验证)