我有一个4000万行x54列的MySql格式的表。我尝试使用read_sql分块读取表,但内存不足(我使用的是32 gb的8核EC2实例)。然后我尝试了Limit和Offset方法,但它真的很慢。
有没有什么有效的方法可以在不损失内存的情况下更快地读取表。
我研究了一些大数据技术,但由于我不熟悉大数据,我无法决定使用哪种技术。
目前我正在使用它来读表,但它确实很慢,而且效率也不是很高。
def read_sql_chunked(query, con, nrows, chunksize=10000):
start = 1
dfs = []
while start < nrows:
df = pd.read_sql("%s LIMIT %s OFFSET %s" % (query, chunksize, start), con)
dfs.append(df)
print(start, chunksize)
start += chunksize
return pd.concat(dfs, ignore_index=True)
dt = read_sql_chunked(query=query, con=conn, nrows=40000000)发布于 2020-06-02 13:35:38
您的表中有多少行?听起来您的表太大了,无法容纳您拥有的内存量。如果您想对数据求和,最好先在sql中进行。
https://stackoverflow.com/questions/62144988
复制相似问题