首页 > 解决方案 > Pyspark 按列分区数据并写入 parquet

问题描述

我需要按列中的值在单独的 s3 键中编写镶木地板文件。该列city有数千个值。使用 for 循环进行迭代,按每列值过滤数据帧,然后编写 parquet 非常慢。有没有办法按列对数据框进行分区city并编写镶木地板文件?

我现在在做什么——

for city in cities:
  print(city)
  spark_df.filter(spark_df.city == city).write.mode('overwrite').parquet(f'reporting/date={date_string}/city={city}')

标签: dataframeapache-sparkpyspark

解决方案


partitionBy 函数解决了这个问题

spark_df.write.partitionBy('date', 'city').parquet('reporting')

推荐阅读