【发布时间】:2020-01-26 21:27:21
【问题描述】:
过去几个月我一直在学习如何使用 Apache-Airflow,想看看是否有人有将 CSV 文件从 S3 传输到 AWS(RDS) 中的 Mysql 数据库的经验。或者从我的本地驱动器到 MySQL。
我设法使用airflow.hooks.S3_hook 将所有内容发送到S3 存储桶以将它们存储在云中,并且效果很好。我用 boto3 来做到这一点。 现在我想将此文件推送到我在 RDS 中创建的 MySQL 数据库中,但我不知道该怎么做。我是否需要使用 MySQL 钩子并在那里添加我的凭据,然后编写一个 python 函数?
另外,不一定要S3到Mysql,如果更简单的话,我也可以尝试从本地驱动器到Mysql。
任何帮助都会很棒!
【问题讨论】:
-
从未在亚马逊上使用过 MySQL。但是那里的 MySQL 应该支持LOAD DATA LOCAL syntax,假设亚马逊没有从源代码中删除它并且在没有的情况下编译它,它可以非常快速地导入 CSV。
-
但是请记住,当使用 LOCAL 选项时,您的 MySQL 客户端必须首先在 Internet 连接速度较慢的情况下将文件上传到服务器,当 wait_timeout/interactive_timeout 设置为时,MySQL 可能会在上传到大文件时断开连接到低.. 所以你可能想在运行时用
SET SESSION wait_timeout= <big_value>; SET SESSION interactive_timeout = <big_value>;改变它......也不确定服务器/客户端中的 MySQL 协议或 amazone 防火墙是否会限制这些文件的上传/下载速度以节省其他客户端的带宽。 -
使用 Postgress 会更好吗?你有什么推荐的?
标签: python mysql amazon-s3 airflow