删除AWS Glue ETL作业中的选定日期分区

时间:2019-12-23 15:21:35

标签: pyspark aws-glue

我已经使用AWS Glue Job(pySpark)设置了数据管道。该作业是从lambda函数触发的,并在进行关联后将镶木地板文件写入日期分区。 有时,我要重新处理相同的日期分区,并想在写入新文件之前删除先前写入的文件。有没有一种方法可以在作业中获取日期分区,以便可以先删除先前写入的文件?

我知道胶粘作业会在某处维护日期分区,因为当我调用gumContext.write_dynamic_frame.from_options()时,它会正确获取分区键。我需要知道作业当前在哪个日期分区上进行操作以删除文件。谢谢您的帮助。射频

1 个答案:

答案 0 :(得分:0)

当前,AWS Glue不支持“覆盖”模式,但是他们正在使用此功能。

作为一种解决方法,您可以将DynamicFrame对象转换为spark的DataFrame并使用spark而不是Glue写入它。示例:

dynamic_frame.toDF()
  .write
  .mode("overwrite")
  .format("parquet")
  .partitionBy("date_col")
  .save(output_dir)

这将覆盖提供的分区中的文件,您不必担心显式清理分区。