如何根据AWS Glue作业中数据帧的不同值写入多个S3存储桶?

时间:2020-08-06 15:20:54

标签: amazon-web-services amazon-s3 aws-glue aws-glue-spark

我有一个带有%put &=sysscp &=syshostname &=syshostinfolong ; SYMBOLGEN: Macro variable SYSHOSTINFOLONG resolves to X64_SRV16 WIN 10.0.14393 Server 列的数据框。我想对所有不同的account_id行进行分组并写入不同的S3存储桶。给定S3存储桶中的每个account_id写入新文件夹也可以。

1 个答案:

答案 0 :(得分:2)

如果要将所有相似的account_id显示在一个文件夹中,则可以通过 partitionBy 函数来实现。下面是一个示例,它将所有account_id分组并以拼写形式将它们写入不同的文件夹。您可以根据使用情况更改模式。

df.write.mode("overwrite").partitionBy('account_id').parquet('s3://mybucket/')

如果要多个分区,则可以通过将列添加到partitionBy函数来实现。例如,假设您有一个列日期,其日期格式为yyyy/mm/dd,则下面的代码段将在account_id内再次创建具有多个日期的文件夹。

df.write.mode("overwrite").partitionBy('account_id','date').parquet('s3://mybucket/')

将以以下格式将文件写入S3:

s3://mybucket/account_id=somevalue/date=2020/11/01
s3://mybucket/account_id=somevalue/date=2020/11/02
s3://mybucket/account_id=somevalue/date=2020/11/03
......
s3://mybucket/account_id=somevalue/date=2020/11/30