2017-11-22 1 views
2

크기가 각각 30GB 인 2 개의 gzip 파일이 있으며이를 분석하기 위해 스파크 코드를 작성했습니다. 스파크 클러스터에는 4 개의 작업자 노드 (각각 28GB RAM 및 4 코어)와 2 개의 헤드 노드 (64GB RAM)가 있습니다.Spark에서 큰 gz 파일 읽기

나는이 2 개의 gzip 파일을 읽고 병렬 처리하기 위해 sc.textFile(histfile,20)을 사용하고 있습니다. 작업은 3 단계 (reduceByKey, reduceByKeysaveAsTextFile)로 나누어집니다. 파일이 2 개이므로 현재 2 명의 직원 만 사용하고 있습니다.

4 시간 이상 소요되었지만 여전히 1 단계가 완료되지 않았습니다. 각 gzip 파일의 크기가 100GB - 200GB 일 때 스파크 작업을 실행하는 올바른 방법은 무엇입니까?

답변

2

gzip 파일이 쪼갤 수 없으므로 첫 번째 스테이지에서 두 개의지도 작업이 생성되고 첫 번째 스테이지가 통과하는 데 많은 시간이 걸립니다.

작업량을 줄이기 위해 제 2 단계 전에 다시 파티션하십시오.

+0

감사합니다. num.executor.instances는 20으로 설정되어 있습니다.'sc.textFile (file, numpartition)'은 파티션을 나누지 않고 병렬 처리를 수행합니까? – vkb

+0

Spark의 입력 형식은 Hadoop에서 나옵니다. numpartition은 분할 가능 파일의 경우에만 적용됩니다. 귀하의 경우에는 분할이 없으므로 numpartitions는 사용하지 않습니다. 1 단계에서 num 작업을 확인하여 동일한 작업을 확인할 수 있습니다. – KrazyGautam