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