我有一个按列ID
进行分区并写入磁盘的数据集。这导致每个分区在文件系统中获得其自己的文件夹。现在,我正在读回该数据,并希望先调用groupBy('ID')
,然后再调用pandas_udf
函数。我的问题是,由于数据是通过ID
进行分区的,因此groupBy('ID')
的速度是否比没有分区的速度快?例如会更好吗使用文件夹结构一次读取一个ID
?我担心groupBy
操作正在浏览每条记录,即使它们已经被分区了。
在Pyspark中,如果将与partitionBy中使用的列相同的列进行分组,会发生什么情况? 编辑:
•
问答
wenboylqx 回答:在Pyspark中,如果将与partitionBy中使用的列相同的列进行分组,会发生什么情况? 编辑:
- 您已按
ID
进行分区并保存到磁盘 - 您再次阅读并想分组并应用熊猫udf
很明显groupby
将遍历每条记录,大多数功能也会遍历。但是使用pandas_udf
的{{1}}将会很昂贵,因为它将经历不必要的洗牌。
由于您已经按要分组的列进行了分区,因此可以使用groupby("ID")
spark_partition_id()
来优化性能。
编辑:
如果需要文件名,可以尝试:
groupby