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 上可用。
感谢
我有一个包含以下数据的 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 上可用。
感谢