dataframe - 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}')
解决方案
partitionBy 函数解决了这个问题
spark_df.write.partitionBy('date', 'city').parquet('reporting')
推荐阅读
- excel - 列表框数据打印 Excel VBA
- bash - 如果我在每次启动新的 shell 会话时激活 tmux,“右键单击 > 在终端中打开”将不起作用
- loops - 在 FASTA 文件中查找主题和主题的位置 - Perl
- python - 将 Pandas 数据帧中的重复项移动到新数据帧
- python - 如何创建可导入模块?
- flutter - 颤动中从右到左语言中的文本省略号问题
- oracle - Grails 4 oracle连接卡住
- numpy - 如何解决这个问题?cv2.error: OpenCV(4.1.2) ... 错误: (-215:Assertion failed) !ssize.empty() in function 'cv::resize'
- javascript - 如何将多个过滤器应用于 mapbox 位置
- firebase - Firestore 中的复合查询 - “order by”和“where”中的不同字段