我已配置DMS以连续将数据从MySQL RDS复制到S3。这会创建两种类型的CSV文件:完整加载和更改数据捕获(CDC)。根据我的测试,我有以下文件:
testdb/addresses/LOAD001.csv.gz
testdb/addresses/20180405_205807186_csv.gz
在DMS正常运行后,我触发AWS Glue Crawler为包含MySQL Replication文件的S3 Bucket构建数据目录,因此Athena用户将能够在基于S3的Data Lake中构建查询。
不幸的是,抓取工具没有为存储在S3中的表构建正确的表架构。 对于上面的示例,它为Athena创建了两个表:
addresses
20180405_205807186_csv_gz
文件 20180405_205807186_csv.gz 包含一行更新,但抓取工具无法合并这两种信息(从 LOAD001.csv.gz 获取第一次加载并使 20180405_205807186_csv.gz 中描述的更新表格。
我还尝试在Athena控制台中创建表,如本博文中所述:https://aws.amazon.com/pt/blogs/database/using-aws-database-migration-service-and-amazon-athena-to-replicate-and-run-ad-hoc-queries-on-a-sql-server-database/。 但它没有产生所需的输出。
来自博文:
当您使用Amazon Athena(本文稍后)查询数据时,您 只需将文件夹位置指向Athena,然后查询结果即可 通过组合来自两者的数据来包括现有和新数据插入 文件。
我错过了什么吗?
答案 0 :(得分:1)
AWS Glue 爬网程序无法协调每个表的初始 LOAD csvs 和增量 CDC csvs 中的不同架构。 This 来自 AWS 的博文及其相关的 cloudformation 模板演示了如何使用 AWS Glue 作业来处理和组合这两种类型的 DMS 目标输出。
答案 1 :(得分:0)
如果文件的结构相同,Athena将在am S3中合并文件。该博客只讲在cdc文件中插入新数据。您将必须构建一个过程来合并CDC文件。我敢肯定,这不是您想听到的。
从blog post: “当您使用Amazon Athena查询数据时(本文稍后),由于AWS DMS添加一列来指示对作为CDC复制的一部分创建的新文件进行插入,删除和更新的方式,我们将无法运行Athena通过合并两个文件(初始加载和CDC文件)中的数据进行查询。”