小编DaP*_*sul的帖子

Spark subtractByKey增加RDD缓存的内存大小

我发现Apache Spark RDD的一个非常奇怪的行为(带有scala 2.11的spark 1.6.0):

当我在RDD上使用subtractByKey时,生成的RDD应该是相等或更小的大小.我得到的是一个在内存中占用更多空间的RDD:

//Initialize first RDD
val rdd1 = sc.parallelize(Array((1,1),(2,2),(3,3))).cache()

//dummy action to cache it => size according to webgui: 184 Bytes
rdd1.first

//Initialize RDD to subtract (empty RDD should result in no change for rdd1)
val rdd2 = sc.parallelize(Array[(Int,Int)]())

//perform subtraction
val rdd3 = rdd1.subtractByKey(rdd2).cache()

//dummy action to cache rdd3 => size according to webgui: 208 Bytes
rdd3.first
Run Code Online (Sandbox Code Playgroud)

我首先意识到这个奇怪的行为是一个~20万行和1.3 GB的RDD,减法后可以扩展到2 GB以上

编辑:尝试使用更多值(10k)=>相同的行为上面的示例.大小增加约1.6倍.另外,reduceByKey似乎也有类似的效果.

当我创建一个RDD时

sc.paralellize(rdd3.collect())
Run Code Online (Sandbox Code Playgroud)

大小与rdd3相同,因此即使从RDD中提取,大小也会增加.

scala apache-spark rdd

7
推荐指数
0
解决办法
457
查看次数

标签 统计

apache-spark ×1

rdd ×1

scala ×1