在 AWS Glue 中附加负载
Append load in AWS Glue
我需要对 S3 存储桶执行追加加载。
- 每天都有新的 .gz 文件转储到 S3 位置,粘附爬虫会读取数据并在数据目录中更新它。
- Scala AWS Glue 作业运行并仅过滤当天的数据。
- 以上过滤后的数据按照一定规则进行转换,创建分区动态数据框(即年、月、日)级别。
现在我需要将此动态数据帧写入包含前一天所有分区的 S3 存储桶。事实上,我只需要将一个分区写入 S3 bucket.Currently 我正在使用下面的一段代码将数据写入 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))
我不确定上面的代码是否会执行追加加载,或者 not.Is 有没有办法通过 AWS 胶水库来实现相同的目的?
您的脚本会将新的数据文件附加到适当的分区。因此,如果您只处理今天的数据,那么它将在 path
下创建一个新的数据分区。例如,如果今天是 2018-11-28,它将在 s3://some_s3_bucket_location/partitonyear=2018/partitonmonth=11/partitonday=28/
文件夹中创建新数据对象。
如果您尝试将数据写入现有分区,则 Glue 将附加新文件并且不会删除现有对象。但是,如果 运行 一个作业多次处理相同的数据,这可能会导致重复。
我需要对 S3 存储桶执行追加加载。
- 每天都有新的 .gz 文件转储到 S3 位置,粘附爬虫会读取数据并在数据目录中更新它。
- Scala AWS Glue 作业运行并仅过滤当天的数据。
- 以上过滤后的数据按照一定规则进行转换,创建分区动态数据框(即年、月、日)级别。
现在我需要将此动态数据帧写入包含前一天所有分区的 S3 存储桶。事实上,我只需要将一个分区写入 S3 bucket.Currently 我正在使用下面的一段代码将数据写入 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))
我不确定上面的代码是否会执行追加加载,或者 not.Is 有没有办法通过 AWS 胶水库来实现相同的目的?
您的脚本会将新的数据文件附加到适当的分区。因此,如果您只处理今天的数据,那么它将在 path
下创建一个新的数据分区。例如,如果今天是 2018-11-28,它将在 s3://some_s3_bucket_location/partitonyear=2018/partitonmonth=11/partitonday=28/
文件夹中创建新数据对象。
如果您尝试将数据写入现有分区,则 Glue 将附加新文件并且不会删除现有对象。但是,如果 运行 一个作业多次处理相同的数据,这可能会导致重复。