Pyspark 删除AWS Glue ETL作业中的选定日期分区
我已经使用AWS Glue Job(pySpark)设置了数据管道。作业由lambda函数触发,在执行relationalize之后,它将拼花文件写入日期分区。 有时,我正在重新处理同一日期分区,并希望在写入新文件之前删除以前写入的文件。有没有办法在作业中获取日期分区,以便可以首先删除以前写入的文件Pyspark 删除AWS Glue ETL作业中的选定日期分区,pyspark,aws-glue,Pyspark,Aws Glue,我已经使用AWS Glue Job(pySpark)设置了数据管道。作业由lambda函数触发,在执行relationalize之后,它将拼花文件写入日期分区。 有时,我正在重新处理同一日期分区,并希望在写入新文件之前删除以前写入的文件。有没有办法在作业中获取日期分区,以便可以首先删除以前写入的文件 我知道glue job会在某处维护日期分区,因为当我调用glueContext.write_dynamic_frame.from_options()时,它会正确地获取分区键。我需要知道作业当前在哪个
我知道glue job会在某处维护日期分区,因为当我调用glueContext.write_dynamic_frame.from_options()时,它会正确地获取分区键。我需要知道作业当前在哪个日期分区上运行以删除文件。谢谢你的帮助。RF目前AWS Glue不支持“覆盖”模式,但他们正在使用此功能 作为一种解决方法,您可以将DynamicFrame对象转换为spark的数据帧,并使用spark而不是Glue来编写它。例如:
dynamic_frame.toDF()
.write
.mode("overwrite")
.format("parquet")
.partitionBy("date_col")
.save(output_dir)
这将覆盖提供的分区中的文件,您不必担心显式清理分区。您可以在这里发布pyspark脚本吗?这是我正在使用的Glue ETL代码。我希望能够删除日期分区中已经存在的文件,然后调用以下write:rootDataSink=glueContext.write\u dynamic\u frame.from\u options(frame=applymapping1,connection\u type=“s3”,connection\u options={“path”:rootPath,“partitionKeys”:[“date”]},format=“parquet”,transformation\u ctx=“datasink4”)