2017-12-12 17 views
0
a = dd.read_csv('huge.csv', blocksize=1e6) 
g = a.groupby(['col_a', 'col_b']) 
g.col_c.sum().max().compute() # failed, MemoryError 

저는 dask.dataframe이 메모리 문제에서 실패하지 않을 것이라고 생각했지만 무엇입니까? 은 BTW, 나는 매우 작은 크기를 설정하면 내가 생각 blocksize 문제는 기본적으로큰 파일에 데이터 프레임 메모리 문제가 있습니다.

답변

1

GROUPBY-집계가 하나의 파티션으로 감소 .... 1e3에서, read_csv 완료 영원히 소요 말한다. 결과에 많은 그룹이 있으면이 단일 파티션이 매우 클 수 있습니다. 당신은 GROUPBY-집계 결과 10 개 파티션이 아닌 단일 파티션 사이에서 분할하게됩니다 (10)

g.col_c.sum(split_out=10).max().compute() 

이 같은 일부 적당한 숫자로 groupby.sum하는 split_out= 키워드를 설정하는 것이 좋습니다.

이 문제가하지만 실제로 경우이 내가 또한 minimal complete verifiable example

을 만드는 것이 좋습니다 다음 작동하지 않으면 내가 모르는, 당신은 아마 더 큰 블록 크기를 원한다. 1MB 블록은 매우 작습니다. 나는 10-100 배를 촬영할 것입니다. 또는 더 나은 것은 기본 값으로 두는 것입니다.