PySpark 中的 Spark 聚合,如果可能的话,不会再发生洗牌操作



有没有办法在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_name级别聚合,只是我想创建一个额外的列并将emp_name行减少到唯一级别。

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

除非数据已经按emp_name分区(在您的情况下不是,并且这样的分区需要随机(或者数据是从由emp_name(与之前相同(将数据整形为所需格式的表中加载的(与之前相同(将数据整形为所需格式,例如使用 pivot

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

将需要洗牌。

最新更新