Spark dataframe reducebykey 类操作

Spark dataframe reducebykey like operation

我有一个包含以下数据的 Spark 数据框(我使用 spark-csv 加载数据):

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

是否有类似于 spark RDD reduceByKey 的东西可以 return Spark DataFrame 作为:(基本上,对相同的键值求和)

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

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

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

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

否则最好把sum换成agg:

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

终于可以使用raw了SQL:

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

另见

这个怎么样?我同意这仍然会转换为 rdd 然后转换为数据帧。

df.select('key','value').map(lambda x: x).reduceByKey(lambda a,b: a+b).toDF(['key','value'])

我认为用户 goks 错过了代码中的某些部分。它不是经过测试的代码。

.map 应该使用 .map(lambda x: (x,1)).reduceByKey 将 rdd 转换为 pairRDD。 ....

reduceByKey 在单值 rdd 或常规 rdd 上不可用,但在 pairRDD 上可用。

感谢