我有一个要求,将数据(频率=每天晚上传输一次)从on-prem关系型数据库(SQL服务器)传输到AWS S3(作为csv文件,csv格式是一个要求)。数据大小在500GB左右。鉴于没有CDC,每天晚上都会复制整个数据库。
当然,我们可以想到parquet或者orc这样的格式,但是csv是我们用例中的要求。
我想过用一个JDBC链接与EMR-spark集群从on-prem RDBMs数据库导入数据,然后再将其转换为csv并发送至S3,但我不确定这是否是最理想的架构。
对于JDBC,我不知道是否有办法让几个连接(在emr-spark和sqlserver之间)并行,以加快传输速度。
这是一个VPN连接,它连接了on-prem网站和aws部分。
谁能给我建议,在尊重aws良好架构原则的前提下,有最快的传输速度的最佳方式?
使用apache spark来传输500gb数据是一个大忌,因为spark更多的是处理大型数据集而不是摄取。
所以这里不应该考虑AWS Glue。
现在,你可以使用AWS EMR和执行SQOOP导入到你的s3 bucket与更多的映射器的数量,因为它将极大地提高性能和500 GB数据可以在不到2小时内传输取决于你的rdbms配置。
其他工具,如果你使用AWS比可以考虑
数据迁移服务(DMS)这是一种快速可靠的日常数据传输方式,其配置也非常简单。此处.
Schema Conversion Tool (SCT) 这是第二个Aws推荐的方式来移动数据从rdbms到s3。你可以使用这个转换你现有的SQL脚本redshift兼容,你也可以移动你的数据从rdbms到s3。这需要一些专业知识的设置。阅读关于它 此处.
SQOOP对EMR:这是我首选的迁移数据的方式,但这将需要你SQOOP知识。如果你是舒适的SQOOP,然后选择这个选项创建你的工作作为瞬时emr集群和协调使用aws步骤函数。
希望对你有所帮助。