Мне нужно прочитать записи из таблицы SQL в фрейме данных dask, чтобы обработать количество записей, которые мне нужно прочитать, может превысить количество записей, которые могут поместиться в памяти. Как мне сделать sh это с помощью dask ?
В настоящее время я делаю это
def get_frame_from_query(query, column_names):
frames = []
batch = []
# TODO ask stackoverflow about this.
for row in database_conn.FetchManyIter(query,batch_size=30000): #read from the database 30k rows at a time.
batch.append({ col:getattr(row,col) for col in column_names})
if len(batch) == 30000:
pd_frame = pd.DataFrame(batch, columns=column_names)
frames.append(dd.from_pandas(pd_frame, npartitions=1, sort=False))
batch = []
if len(batch) > 0:
pd_frame = pd.DataFrame(batch)
frames.append(dd.from_pandas(pd_frame, npartitions=1, sort=False))
return dd.concat(frames)
Я подумал, что когда я преобразовал его в dask dataframe, он записал бы кадр на диск. Но, глядя на использование моей памяти, похоже, этого не происходит.