【问题标题】:How to connect to Teradata database using Dask?如何使用 Dask 连接到 Teradata 数据库?
【发布时间】:2022-01-17 06:10:42
【问题描述】:

我用过的pandas等价的连接Teradata的代码是:

database = config.get('Teradata connection', 'database')
host = config.get('Teradata connection', 'host')
user = config.get('Teradata connection', 'user')
pwd = config.get('Teradata connection', 'pwd')

with teradatasql.connect(host=host, user=user, password=pwd) as connect:
    query1 = "SELECT * FROM {}.{}".format(database, tables)
    df = pd.read_sql_query(query1, connect)

现在,我需要使用 Dask 库来加载大数据,以替代 pandas。

请建议一种将其与 Teradata 连接的方法。

【问题讨论】:

    标签: teradata dask dask-dataframe teradatasql


    【解决方案1】:

    Teradata 似乎有一个 sqlalchemy engine,因此您应该能够安装它,适当地设置您的连接字符串并使用 Dask 现有的 from_sql 函数。

    或者,您可以手动执行此操作:您需要确定一组条件,这些条件将为您对数据进行分区,每个分区都足够小以供您的工作人员处理。然后您可以制作一组分区并组合成一个数据框,如下所示

    def get_part(condition):
        with teradatasql.connect(host=host, user=user, password=pwd) as connect:
            query1 = "SELECT * FROM {}.{} WHERE {}".format(database, tables, condition)
            return pd.read_sql_query(query1, connect)
    
    parts = [dask.delayed(get_part)(cond) for cond in conditions)
    df = dd.from_delayed(parts)
    

    (理想情况下,您可以事先为from_delayed 导出meta= 参数,或许可以通过获取原始查询的前10 行)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-21
      • 2020-08-17
      • 2019-09-06
      • 2021-03-15
      • 2019-06-17
      • 2019-10-27
      • 2019-06-23
      • 2017-07-24
      相关资源
      最近更新 更多