我有两个用例:
- 从 Oracle / PostgreSQL / Redshift / S3 / CSV 提取、转换并加载到我自己的 Redshift 集群
- 安排作业每天/每周运行(INSERT + TABLE 或 INSERT + NONE 选项更好)。
我目前正在使用:
- 用于提取的 SQLAlchemy(通常运行良好)。
- 用于转换和加载的 PETL(适用于较小的数据集,但对于约 50m+ 行,速度很慢并且与数据库的连接超时)。
- 调度组件的内部工具(它将转换存储在 XML 中,然后从 XML 中加载,看起来相当长且复杂)。
我一直在寻找这个链接 https://github.com/pawl/awesome-etl#python但欢迎其他建议。如果有一个“更简单”的过程,我可以通过 Python 完成所有操作(我只使用 Redshift,因为它似乎是最佳选择),那么导出到 Spark 或类似的也是受欢迎的。
你可以试试pyetl https://github.com/taogeYT/pyetlpython3编写的etl框架
from pyetl import Task, DatabaseReader, DatabaseWriter
reader = DatabaseReader("sqlite:///db.sqlite3", table_name="source")
writer = DatabaseWriter("sqlite:///db.sqlite3", table_name="target")
columns = {"id": "uuid", "name": "full_name"}
functions={"id": str, "name": lambda x: x.strip()}
Task(reader, writer, columns=columns, functions=functions).start()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)