我需要对S3存储桶执行追加加载。
每天都有新的.gz文件被转储到S3位置,并且粘合爬虫会读取数据并在数据目录中更新它。
Scala AWS Glue作业运行并仅过滤当天的数据。
根据某些规则转换上述过滤数据,并创建分区动态数据帧(即年,月,日)级别。
现在,我需要将此动态数据帧写入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胶合库实现相同的方法?
你的脚本会将新数据文件附加到适当的分区。因此,如果您只处理今天的数据,那么它将在下面创建一个新的数据分区path。例如,如果今天是2018-11-28,它将在s3://some_s3_bucket_location/partitonyear=2018/partitonmonth=11/partitonday=28/文件夹中创建新的数据对象。
如果您尝试将数据写入现有分区,则Glue将附加新文件,并且不会删除现有对象。但是,如果多次运行作业以处理相同的数据,这可能会导致重复
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。