【问题标题】:Append load in AWS Glue在 AWS Glue 中附加负载
【发布时间】:2018-11-28 11:29:12
【问题描述】:

我需要对 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 胶水库来实现?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-22
      • 1970-01-01
      • 1970-01-01
      • 2020-12-30
      • 2020-08-20
      • 2020-05-21
      • 2018-08-31
      • 1970-01-01
      相关资源
      最近更新 更多