amazon-web-services - 如何根据 AWS Glue 作业中数据帧的不同值写入多个 S3 存储桶?
问题描述
我有一个带有account_id
列的数据框。我想将所有不同的account_id
行分组并写入不同的 S3 存储桶。account_id
为给定 S3 存储桶中的每个文件写入一个新文件夹也可以。
解决方案
如果您希望所有类似的 account_id 都出现在一个文件夹中,那么您可以通过partitionBy函数实现它。下面是一个示例,它将所有 account_id 分组并以 parquet 格式将它们写入不同的文件夹。您可以根据用例更改模式。
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
推荐阅读
- haskell - main 返回 IO 东西而不是 IO() 有什么用?
- r - 在对矩阵中的字符串进行子集化后,如何获得字符串矩阵?
- python - 大面积加载关卡时出现“pygame.error: Out of memory”
- mysql - 如果值为 null ,如何在所有行中设置值,使用 Max 中的值
- assembly - 如何将我的 .asm 代码转换为可用的 .exe 文件?
- java - 已跳过侦听器中的 Firebase 侦听器
- c - 出现段错误但不知道如何修复它
- python - 如何在项目和项目的依赖项之间指定不同的 pypi 源
- r - 如何使用 R 中的 MASS 库包修复“找不到对象”?
- laravel - Laravel - DELETE 方法不支持删除路由