PySpark 中的 Spark 聚合,如果可能,不会再发生混洗操作
Spark aggregation in PySpark, if possible without incurring anymore shuffling operation
有没有办法在 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 可能的话,但是,它已经聚合在唯一的 class 和 emp_name 级别,我只是想创建一个额外的列并减少 emp_name 行达到独一无二的水平。
+--------+-----------+-----------+
|emp_name|class1Score|class2Score|
+--------+-----------+-----------+
| Naman| 200| 200|
| Jason| 100| 200|
| Omar| 200| 200|
+--------+-----------+-----------+
除非数据已经被 emp_name
分区(在你的情况下它不是,并且这样的分区需要随机播放)或者数据是从 table 中加载的 emp_name
(与以前一样)将数据重塑为所需的格式,例如使用 pivot
df.groupBy("emp_name").pivot("class", [True, False]).sum()
需要洗牌。
有没有办法在 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 可能的话,但是,它已经聚合在唯一的 class 和 emp_name 级别,我只是想创建一个额外的列并减少 emp_name 行达到独一无二的水平。
+--------+-----------+-----------+
|emp_name|class1Score|class2Score|
+--------+-----------+-----------+
| Naman| 200| 200|
| Jason| 100| 200|
| Omar| 200| 200|
+--------+-----------+-----------+
除非数据已经被 emp_name
分区(在你的情况下它不是,并且这样的分区需要随机播放)或者数据是从 table 中加载的 emp_name
(与以前一样)将数据重塑为所需的格式,例如使用 pivot
df.groupBy("emp_name").pivot("class", [True, False]).sum()
需要洗牌。