Dask-从SQL加载数据帧而不指定index_col

问题描述 投票:0回答:1

我正在尝试从SQL连接加载Dask数据框。根据read_sql_table documentation,有必要传入index_col。如果没有好的列可作为索引,该怎么办?

这是合适的替代品吗?

# Break SQL Query into chunks
chunks = []
num_chunks = math.ceil(num_records / chunk_size)

# Run query for each chunk on Dask workers
for i in range(num_chunks):
    query = 'SELECT * FROM ' + table + ' LIMIT ' + str(i * chunk_size) + ',' + str(chunk_size)
    chunk = dask.delayed(pd.read_sql)(query, sql_uri)
    chunks.append(chunk)

# Aggregate chunks
df = dd.from_delayed(chunks)
dfs[table] = df
dask dask-distributed dask-delayed dask-dataframe
1个回答
1
投票

遗憾的是,在大多数SQL实现中,LIMIT / OFFSET通常不是可靠的分区查询方法。特别是,通常情况下,为了获得偏移量并从查询中获取后续行,引擎必须首先解析较早的行,因此生成大量分区的工作会大大放大。在某些情况下,您甚至可能会错过行或重复行。这就是在dask sql实现中要求边界值的原因。

但是,您设置dask数据框的方式在原则上没有错。如果您可以证明您的服务器没有遭受我们预期的问题的困扰,那么欢迎您采用该方法。

© www.soinside.com 2019 - 2024. All rights reserved.