在Pyspark中,如果将与partitionBy中使用的列相同的列进行分组,会发生什么情况? 编辑:

我有一个按列ID进行分区并写入磁盘的数据集。这导致每个分区在文件系统中获得其自己的文件夹。现在,我正在读回该数据,并希望先调用groupBy('ID'),然后再调用pandas_udf函数。我的问题是,由于数据是通过ID进行分区的,因此groupBy('ID')的速度是否比没有分区的速度快?例如会更好吗使用文件夹结构一次读取一个ID?我担心groupBy操作正在浏览每条记录,即使它们已经被分区了。

wenboylqx 回答:在Pyspark中,如果将与partitionBy中使用的列相同的列进行分组,会发生什么情况? 编辑:

  1. 您已按ID进行分区并保存到磁盘
  2. 您再次阅读并想分组并应用熊猫udf

很明显groupby将遍历每条记录,大多数功能也会遍历。但是使用pandas_udf的{​​{1}}将会很昂贵,因为它将经历不必要的洗牌。

由于您已经按要分组的列进行了分区,因此可以使用groupby("ID") spark_partition_id()来优化性能。

编辑:

如果需要文件名,可以尝试:

groupby
本文链接:https://www.f2er.com/3148316.html

大家都在问