it-roy-ru.com

Spark датафрейм

У меня есть фрейм данных 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 для этого?)

5
Carson Pun

Если вас не интересуют имена столбцов, вы можете использовать groupBy и sum:

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

в противном случае лучше заменить sum на agg:

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/Группа данных Поведение/оптимизация

15
zero323

Как насчет этого? Я согласен, что все еще конвертируется в rdd, затем в dataframe.

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