从 Teradata 提取几百万条记录到 Python (pandas)

Extract a few million records from Teradata to Python (pandas)

我的 teradata table 中有 6 个月的电子邮件数据(电子邮件属性,如发送日期、主题行以及收件人详细信息,如年龄、性别等,总共大约 20 列)。总共大约有 2000 万,我想将其纳入 Python 以用于进一步的预测建模目的。

我尝试使用 'pyodbc' 连接器 运行 选择查询,但它只是 运行 小时和小时。然后我停止它并修改查询以获取仅 1 个月的数据(可能是 3-4 百万)但仍然需要很长时间。

是否有比 'pyodbc' 更好(更快)的选择或完全不同的方法?

欢迎任何意见。谢谢

在 Python 和 Teradata 之间通信时,我建议使用 Teradata -package (pip teradata; https://developer.teradata.com/tools/reference/teradata-python-module)。它利用 ODBC(或 REST)进行连接。

除此之外,您还可以通过 JayDeBeApi 使用 JDBC。 JDBC 有时可能比 ODBC 快一些。

两个选项都支持 Python 数据库 API 规范,这样您的其他代码就不必改动了。例如。 pandas.read_sql 与上面的连接工作正常。

您的性能问题与其他一些问题类似:

  1. 网络连接

  2. Python (Pandas) 内存处理

ad 1) throughput can only replaced with more throughput

ad 2) 你可以尝试在数据库中做尽可能多的事情(特征工程)+你的本地机器应该有 RAM ("pandas rule of thumb: have 5 to 10 times as much RAM as the size of your dataset") - 也许 Apache Arrow 可以缓解你的一些本地 RAM 问题

检查: