标签: dask-to-sql

使用 Dask 的新 to_sql 提高效率(内存/速度)或替代从 dask 数据帧获取数据到 SQL Server 表

我的最终目标是将 SQL/Python 一起用于一个有太多数据供熊猫处理的项目(至少在我的机器上)。所以,我去了dask

  1. 从多个来源(主要是 SQL Server 表/视图)读入数据
  2. 将数据操作/合并到一个包含约 1000 万行和 52 列的大型 dask 数据框表中,其中一些具有一些长的唯一字符串
  3. 每天将其写回 SQL Server,以便我的 PowerBI 报表可以自动刷新数据。

对于 #1 和 #2,它们需要大约 30 秒才能使用最少的内存来执行(几个 SQL 查询大约 200 行代码使用 dask 操作大型数据集)。又快又好玩!!!

但是,上面的#3 一直是主要的瓶颈。在(1. 内存和 2. 速度(执行时间))方面,使用 dask 或其他替代方法完成 #3 的一些有效方法是什么?查看更多背景,以及我尝试过的内容和得出的一些结论。


对于上面的#1、#2 和#3,由于内存限制/执行时间长,这是我发现用熊猫无法完成的任务,但是dask用出色的颜色解决了上面的#1 和#2,但我仍然与#3 苦苦挣扎——以自动方式将数据返回到 SQL 表中,我没有发送到 .csv 然后导入到 SQL Server。我试图.compute()将 dask 数据帧转换为 Pandas 数据帧,然后写入to_sql,但是这种方式违背了使用 dask 读取/数据模型的目的,并且再次耗尽内存/无论如何都要永远执行。

因此,新计划是to_csv每天生成一个新的 .csv 并使用查询将数据批量插入到表中。我认为这仍然是一个可行的解决方案;但是,今天,我很高兴地发现 dask 发布了一个新to_sql功能(https://docs.dask.org/en/latest/dataframe-api.html#dask.dataframe.DataFrame.to_sql)。利用有关此主题的现有 StackOverflow 文章/博客(例如来自 Francois …

sql-server sqlalchemy pandas dask dask-to-sql

5
推荐指数
1
解决办法
2126
查看次数

标签 统计

dask ×1

dask-to-sql ×1

pandas ×1

sql-server ×1

sqlalchemy ×1