运行使用 RDS MySQL 连接的 ETL 作业后,S3 中的多个文件被创建

Posted

技术标签:

【中文标题】运行使用 RDS MySQL 连接的 ETL 作业后,S3 中的多个文件被创建【英文标题】:Multiple files in S3 are getting created after running an ETL job that uses connection of RDS MySQL 【发布时间】:2018-06-29 13:19:50 【问题描述】:

我是 AWS 胶水的新手,我想看看我是否可以在 S3 中创建我们的数据湖。为此,我创建了一个 ETL 作业以在 RDS 中的小型 mysql 表上运行。作业完成后,在 S3 中创建了多个 CSV 文件,其中大部分是空的。

我想了解:

    为什么将数据分区到多个文件中? 我可以在多个表上运行作业吗?在 AWS 控制台中,它只允许选择一个表作为源数据存储。这是否意味着我需要为每个表创建一个工作?

【问题讨论】:

【参考方案1】:

    这是由于数据键的分布所致。据我所知,您只能手动对密钥进​​行负载均衡。

    可能重复:how can aws glue job upload several tables in redshift。

【讨论】:

嗨@Kishore 感谢您回答这个问题。您能否举例说明第 1 点? 嗨 Aditya,这是由于在您的底层 spark 作业中运行的工人/减速器的数量。每个人都会扔掉一个单独的文件。如果你想减少输出文件的数量,尝试使用 coalesce(n) - 函数,n是你想要的输出文件的数量。

以上是关于运行使用 RDS MySQL 连接的 ETL 作业后,S3 中的多个文件被创建的主要内容,如果未能解决你的问题,请参考以下文章

如何在数据加载之前截断 AWS Glue 作业中的 RDS 表?

连接到同一数据库的两个cron作业会导致连接失败

AWS Glue ETL作业缺少对爬网程序可见的字段

mysql_ping 与 Amazon RDS 一起挂起

mysql_ping 与 Amazon RDS 一起挂起

使用nginx服务器和AWS RDS的Laravel出现“连接太多”错误