gpt4 book ai didi

dask - 为什么 dask 的 read_sql_table 需要一个 index_col 参数?

转载 作者:行者123 更新时间:2023-12-04 04:02:55 24 4
gpt4 key购买 nike

我正在尝试使用 dask 中的 read_sql_table,但我遇到了一些与 index_col 参数相关的问题。我的 sql 表没有任何数值,我不知道要给 index_col 参数什么。

我在文档中读到,如果 index_col 是“object”类型,我必须提供“divisions”参数,但我不知道我的 中的值是什么index_col 在阅读表格之前。

我真的很困惑。不知道为什么我在使用 read_sql_table 时必须提供 index_col 而在使用 read_csv 时却不必提供。

最佳答案

我发现在某些情况下,通过 pd.read_sql 及其 chunksize< 将 DataFrame 对象分散到集群中是最简单的处理方法参数:

from dask import bag as db

sql_text = "SELECT ..."
sql_meta = {"column0": "object", "column1": "uint8"}
sql_conn = connect(...)
dfs_futs = map(client.scatter, # Scatter each object to the cluster
pd.read_sql(sql_text,
sql_conn,
chunksize=10_000, # Iterate in chunks of 10,000
columns=list(sql_meta.keys())))

# Now join our chunks (remotely) into a single frame.
df = db.from_sequence(list(dfs_futs)).to_dataframe(meta=sql_meta)

这很好,因为您不需要处理任何潜在的驱动程序/包,这些驱动程序/包在分布式节点和/或难以轻松分区数据的情况下管理起来会很麻烦。

只是关于性能的说明,对于我的用例,我们利用数据库的外部表操作将数据假脱机到 CSV,然后使用 pd.read_csv 读取它(它几乎是与上面的处理相同),而 SELECT ... FROM ... WHERE 与 Dask 并行化和分块查询的方式相比,在性能方面可以接受,因为需要付出代价在数据库中执行分块。

关于dask - 为什么 dask 的 read_sql_table 需要一个 index_col 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62818473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com