提问人:Saranya 提问时间:11/17/2023 最后编辑:Saranya 更新时间:11/20/2023 访问量:30
AWS GLUE - 如何从 RDS 表读取数据并将数据作为 csv 文件复制到 S3 存储桶
AWS GLUE - How to read data from RDS table and copy to S3 bucket as csv file
问:
AWS 胶水对我来说是新的。 我正在使用 AWS Glue,我正在尝试从 RDS 数据库表中读取数据并将数据作为单个 csv 文件写入 s2 存储桶。我在 Glue 控制台中使用 Visual ETL 设置了一个 AWS Glue 作业,选择源作为关系数据库,选择目标作为带有表的 S3 存储桶(我为架构创建了一个爬网程序)。作业成功,但我注意到我在目标 s3 存储桶位置获得了 10 个单独的文件。有没有人知道如何以我在 s3 存储桶中只获得一个合并文件的方式实现这一目标。
答:
0赞
Tomasz Breś
11/19/2023
#1
每个 Glue 作业在多个实例上并行执行。
您的问题很可能与默认的 Glue Job 工作人员数量(10 人)有关。
您必须在胶水作业代码中实现输出合并操作。
检查一下:
AWS Glue 作业:如何在 S3 中合并多个输出 .csv 文件
1赞
Oleksandr Lykhonosov
11/20/2023
#2
当您使用 AWS Glue 时,很高兴知道 Glue 在后台与 Spark 配合使用。Spark 通常会将数据分散到多个文件中,以加快速度,这对于大型数据集非常有用。但有时,您最终会得到很多文件。
要解决此问题,您可以使用 Glue 作业脚本中的合并功能来减少分区数并将数据合并到单个文件中。下面是一个简单的示例:
# put all the data into just one file
df.coalesce(1).write...
但要小心:使用可能会减慢速度,尤其是在处理大量数据时,因为它涉及将数据洗牌到单个分区,从而可能影响性能。因此,这有点像在获取一个文件和保持快速发展之间找到平衡,具体取决于您拥有的数据量以及您需要对其进行的处理。coalesce
评论