当前位置:  开发笔记 > 编程语言 > 正文

Spark数据帧reducebykey就像操作一样

如何解决《Spark数据帧reducebykey就像操作一样》经验,为你挑选了1个好方法。

我有一个带有以下数据的Spark数据帧(我使用spark-csv来加载数据):

key,value
1,10
2,12
3,0
1,20

有什么类似于spark RDD reduceByKey可以返回Spark DataFrame :(基本上,总结相同的键值)

key,value
1,30
2,12
3,0

(我可以将数据转换为RDD并执行reduceByKey操作,但是有更多Spark DataFrame API方法可以执行此操作吗?)



1> zero323..:

如果您不关心列名,可以使用groupBy后跟sum:

df.groupBy($"key").sum("value")

否则最好更换sumagg:

df.groupBy($"key").agg(sum($"value").alias("value"))

最后你可以使用原始SQL:

df.registerTempTable("df")
sqlContext.sql("SELECT key, SUM(value) AS value FROM df GROUP BY key")

另请参见DataFrame/Dataset groupBy行为/优化


在RDD API中,我使用`reduceByKey`,因为`groupByKey`会将键的所有值收集到内存中-如果键与许多值相关联,则工作程序可能会耗尽内存。`groupBy`也有这个限制吗?
推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有