如有可能,PySpark中的Spark聚合,不产生额外的洗牌操作

2024-09-21 11:33:23 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有办法用pyspark隐藏我的df看起来像

df = sc.parallelize([
    ['Naman', True,200],
    ['Jason', True,100],
    ['Jason', False,200],
    ['Omar', True,100],
    ['Omar', False,200],
    ['Omar', True,200],
    ['Naman', False,200]
]).toDF(('emp_name', 'class','score'))

df.show()

然而,如果可能的话,如果没有groupby,它已经在唯一类和emp_名称级别上聚合,它只是我想创建一个额外的列,并将emp_名称行减少到唯一级别

+--------+-----------+-----------+
|emp_name|class1Score|class2Score|
+--------+-----------+-----------+
|   Naman|        200|        200|
|   Jason|        100|        200|
|    Omar|        200|        200|
+--------+-----------+-----------+

Tags: name名称falsetruedf级别pysparksc
1条回答
网友
1楼 · 发布于 2024-09-21 11:33:23

除非数据已经被emp_name分区(在您的情况下不是,这样的分区需要洗牌),或者数据是通过emp_name将数据重新格式化为所需格式(与之前相同)从表加载的,例如使用pivot

df.groupBy("emp_name").pivot("class", [True, False]).sum()

需要洗牌

相关问题 更多 >

    热门问题