PySpark groupBy 和多列聚合函数

PySpark groupBy and aggregation functions with multiple columns

我使用 spark Dataframe 并尝试使用 groupby 创建一个带有聚合的新 table: 我的数据示例:

这是期望的结果:

我试过这个代码data.groupBy("id1").agg(countDistinct("id2").alias("id2"), sum("value").alias("value"))

有人可以帮忙吗?谢谢

尝试使用下面的代码 -

from pyspark.sql.functions import *

df = spark.createDataFrame([('id11', 'id21', 1), ('id11', 'id22', 2), ('id11', 'id23', 3), ('id12', 'id21', 2), ('id12', 'id23', 1), ('id13', 'id23', 2), ('id13', 'id21', 8)], ["id1", "id2","value"])

聚合数据 -

df.groupBy("id1").agg(count("id2"),sum("value")).show()

输出-

+----+----------+----------+
| id1|count(id2)|sum(value)|
+----+----------+----------+
|id11|         3|         6|
|id12|         2|         3|
|id13|         2|        10|
+----+----------+----------+