pyspark 如何使用AWS Glue正确分区

8yoxcaq7  于 2023-08-03  发布在  Spark
关注(0)|答案(1)|浏览(109)

我有一个胶水的工作,做了一个销售文件的ETL,并在年底分区我的文件的销售日期,每个分区接收列的名称+销售日期,但在文件本身的内容列的销售日期是空的,我不知道如何解决它
functions import col from pyspark.sql import functions as F

通过data(data_venda)参与DataFrame

partitionedDataFrame = coalescedDataFrame.repartition(“dt_venda”)

Gerar um arquivo .csv帕拉cada partição(data_venda)

partitionedDataFrame.write.partitionBy(“dt_venda”).option(“sep”,“;“).option(“header”,“true”).mode(“append”).csv(“s3://s3-aws-araujo-sf-cx360-cdp-dev/03-cleansed/venda/”)
job.commit()
其思想是,输出文件以销售日期命名,并且该文件的所有列和记录都保持不变

6vl6ewon

6vl6ewon1#

通常我使用Athena来查询Glue jobs生成的S3中的数据。Athena为分区创建了列,因此最终的表中仍然有这些列,就像原始数据中一样。
在你的情况下(不知道你对最终数据的用途是什么),我建议在不同的列名下复制列,并根据什么适合你的要求,最好使用原始列或复制列进行分区。

from pyspark.sql.functions import *

partitionedDataFrame = partitionedDataFrame.withColumn('dt_dup', col('dt_venda'))
# This will use new 'dt_dup' column for partitioning keeping the original column 'dt_venda' in the output files
partitionedDataFrame.write.partitionBy("dt_dup").option("sep", ";").option("header", "true").mode("append").csv("s3://s3-aws-araujo-sf-cx360-cdp-dev/03-cleansed/venda/")

字符串

相关问题