在AWS Glue中添加负载

时间:2018-11-28 11:29:12

标签: apache-spark aws-glue glue aws-glue-data-catalog

我需要对S3存储桶执行附加加载。

  1. 每天都会将新的.gz文件转储到S3位置,然后胶搜寻器会读取数据并在数据目录中对其进行更新。
  2. Scala AWS Glue作业运行,并且仅过滤当天的数据。
  3. 根据某些规则转换上面过滤的数据,并创建一个分区的动态数据框(即年,月,日)级别。

现在,我需要将此动态数据帧写入具有所有前一天分区的S3存储桶中。实际上,我只需要向S3存储桶写入一个分区。目前,我正在使用下面的代码将数据写入S3存储桶。

// Write it out in Parquet for ERROR severity   
    glueContext.getSinkWithFormat(
    connectionType = "s3",
    options = JsonOptions(Map("path" -> "s3://some s3 bucket location", 
    "partitionKeys" -> Seq("partitonyear","partitonmonth","partitonday"))),
     format = "parquet").writeDynamicFrame(DynamicFrame(dynamicDataframeToWrite.toDF().coalesce(maxExecutors), glueContext)) 

我不确定上面的代码是否会执行附加加载。是否可以通过AWS胶库实现相同的加载?

1 个答案:

答案 0 :(得分:0)

您的脚本会将新的数据文件附加到适当的分区。因此,如果仅处理今天的数据,则它将在path下创建一个新的数据分区。例如,如果今天是2018-11-28,它将在s3://some_s3_bucket_location/partitonyear=2018/partitonmonth=11/partitonday=28/文件夹中创建新的数据对象。

如果您尝试将数据写入现有分区,则Glue将追加新文件,并且不会删除现有对象。但是,如果多次运行作业以处理相同的数据,则可能导致重复。