2016-10-26 6 views
0

PIG에서 스키마 &을 언급하지 않고 LOAD 문을 사용하여 CSV 파일을로드 할 때 기본 PIGSTORAGE (\ t)를 사용하면 어떻게됩니까? 로드가 제대로 작동하고 데이터를 덤프 할 수 있습니까? 그렇지 않으면 파일에 ','가 있고 pigstorage가 '/ t'이므로 오류가 발생합니다. 조언을 부탁하십시오PIG에서 CSV 파일로드

+0

1)로드 선언문을 표시하고 2) 직접 시도해보십시오. – Andrew

답변

2

PigStorage ('\ t')를 사용하여 스키마를 정의하지 않고 csv 파일을로드하면 입력 파일의 각 행에 탭이 없기 때문에 전체 행이 하나의 튜플로 취급됩니다. 줄에있는 개별 단어에 액세스 할 수 없습니다.

예 : 입력 파일 :

john,smith,nyu,NY 
jim,young,osu,OH 
robert,cernera,mu,NJ 

a = LOAD 'input' USING PigStorage('\t'); 
dump a; 

OUTPUT: 
(john,smith,nyu,NY) 
(jim,young,osu,OH) 
(robert,cernera,mu,NJ) 

b = foreach a generate $0, $1, $2; 
dump b; 
(john,smith,nyu,NY,,) 
(jim,young,osu,OH,,) 
(robert,cernera,mu,NJ,,) 

이상적 B 했어야 : 구분 쉼표 이었다면

(john,smith,nyu) 
(jim,young,osu) 
(robert,cernera,mu) 

. 그러나 구분 기호가 탭이고 입력 레코드에 탭이 없으므로 전체 줄은 하나의 필드로 취급됩니다. 돼지가 무언가가 null이면 돼지 코뿔소가 불평합니다. null이있을 때 아무 것도 출력하지 않습니다. 따라서 b을 덤프 할 때 쉼표 만 볼 수 있습니다.

희망이 유용했습니다.

관련 문제