2017-10-27 1 views
2

주제가 약간 벗어나기 쉽기 때문에 sorted = True 옵션을 적용하고 중요한 데이터를 저장할 수있는 dask 데이터 프레임에 큰 csv 파일을로드하는 간단한 솔루션을 보여 드리고자합니다. 처리 시간.커다란 정렬되지 않은 CSV 파일의 dask set_index

학습을 위해 사용하는 장난감 클러스터의 크기와 파일 크기 (33GB)에 대해 dask unsetable 내에서 set_index를 수행하는 옵션을 발견했습니다.

문제가 큰 정렬되지 않은 CSV 파일 (수십 기가 바이트)을 dask 데이터 프레임으로로드하고 신속하게 그룹 작업을 시작하면 내 제안은 이전에 unix 명령 "sort"로 정렬하는 것입니다.

정렬 처리 요구 사항은 무시할 수 있으며 RAM 제한을 관리 할 수없는 한계 이상으로 밀어 내지 않습니다. 버퍼로 소비되는 램뿐만 아니라 실행/정렬 할 병렬 프로세스의 수를 정의 할 수 있습니다. 지금까지는 디스크 공간이 있었지만, 이것은 흔드는 부분입니다.

트릭은 명령을 내리기 전에 환경에서 LC_ALL = C를 내보내는 것입니다. 현명한, 판다/dask 정렬과 unix 정렬은 다른 결과를 만들어 낼 것입니다. 여기

내가

export LC_ALL=C 

zcat BigFat.csv.gz | 
fgrep -v (have headers?? take them away)| 
sort -key=1,1 -t "," (fancy multi field sorting/index ? -key=3,3 -key=4,4)| 
split -l 10000000 (partitions ??) 

결과가

ddf=dd.read_csv(.....) 
ddf.set_index(ddf.mykey,sorted=True) 

희망에 대한 준비를 사용한 코드는이 전술 한 바와 같이,

JC는

답변

1

, 난 그냥 생각하는 데 도움이 내 문제의 해결책으로 게시. 희망은 다른 사람들을 위해 일합니다.

나는 이것이 최고, 가장 효율적이거나 더 많은 pythonic이라고 주장하지 않는다! :-)

+0

https://stackoverflow.com/help/self-answer 48 시간 후에 답을 표시 할 수 있습니다 – Rookie

관련 문제