从 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 与上面的连接工作正常。
您的性能问题与其他一些问题类似:
网络连接
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 问题
检查:
我的 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 与上面的连接工作正常。
您的性能问题与其他一些问题类似:
网络连接
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 问题
检查: