【问题标题】:Export 100 millions rows from teradata to snowflake using python使用python将1亿行从teradata导出到雪花
【发布时间】:2022-01-03 08:38:39
【问题描述】:

将数亿行从 teradata 导出到雪花的方法是什么?我正在使用 to_csv() 的方法,但是,将数据从数据帧加载到 csv 需要 2 个小时以上。任何更快/更好的方法都可以用来提高性能和提高效率。此外,使用 to_csv() 数据似乎在某些地方已损坏。有什么解决办法吗?

代码 -

query = "SELECT * FROM " + table_name
df = pd.read_sql(query, connect) 
df.to_csv(path, index=False, encoding='utf-8')

【问题讨论】:

  • 我不知道雪花是什么。但是,从您展示的代码中可以清楚地看出,您正在将整个结果集加载到内存(数据框)中。对于数以百万计的行,这可能会导致交换,因此可能会非常慢。为什么不在结果集上获得一个游标,然后一次处理一行,或者如果可行,分块处理?这将使用更少的内存并且可能更快
  • @JCaesar 是的,但是我应该如何处理它?另外,熊猫块大小不是设置为默认值 1 吗?如果您可以提供任何链接或资源来参考此方法,将会有很大帮助!
  • @JCaesar Snowflake 也是一个数据仓库。我正在将数据从 teradata 迁移到雪花。但是,问题在于将数以亿计的数据导出并加载到目标数据库中,
  • 我不明白你为什么要使用 pandas。为什么你认为这是必要的?
  • 你到底想做什么?从本地 Teradata 迁移到云雪花?云到云?本地到本地?其他一些我没想到的组合?

标签: python python-3.x teradata teradatasql


【解决方案1】:

通过使用 pyspark 方法得到了解决方案。

溶胶1: Teradata 16.00 以上版本只需一个jar 即可将pyspark API 与代码连接并建立连接。完成后,您可以使用 repartition() 将数据帧分批划分并根据需要将其导出到 csv() 中。

溶胶2: Teradata 提供使用 TPT 直接进入 AWS、Azure 存储实用程序的数据流选项。要将数据转储到 AWS S3 存储桶中,您可以查看给定链接以了解数据连接器和相关问题。 链接-https://docs.teradata.com/r/p~0sSD4zl4K8YPbEGnM3Rg/SRIygNBx15FwMJ333zg_HA

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 2019-06-18
    • 1970-01-01
    • 2022-07-18
    相关资源
    最近更新 更多