2017-11-29 19 views
0

다음과 같이 파일을 입력했습니다.PIG의 단일 레코드에 다중 레코드

1,Cust_name1,addr_type,Addr1 
1,Cust_name1,addr_type,Addr2 
2,Cust_name3,addr_type,Addr1 
2,Cust_name3,addr_type,Addr3 

Avro 형식으로 변환하고 싶습니다.

출력 I가 배열 브로 반복 요소에 하나의 메시지를 생성 할 각 고객

1,Cust_name1,{(addr_type,Addr1),(addr_type,Addr2) 
1,Cust_name3,{(addr_type,Addr1),(addr_type,Addr3) 

같을 것이다. 이드가 가능한 piggybank.jar에 브로 형식으로 사용 AvroStorage에 저장하고 script.It에 등록하는 고객 Name.In 순서에 의해

답변

0

그룹이 here

REGISTER /path/piggybank.jar; 
A = LOAD 'data.txt' USING PigStorage(',') AS (int:id;name:chararray;addrtype:chararray;addr:chararray); 
B = GROUP A BY (id,name); 
STORE B INTO '/path/' USING org.apache.pig.piggybank.storage.avro.AvroStorage();; 
+0

에서 다운로드 할 수 있습니다 감사합니다! 그러나이를 Avro 형식으로 변경하는 방법은 무엇입니까? –

+0

현재 출력에서 ​​그룹의 열을 배열의 일부로 가져옵니다. 그룹에 X = FOREACH B 그룹을 생성 한 후 한 단계 더 추가합니다. A. (st_date, country_code, phone); 그러나 저장소 X INTO 'Avro_out21'을 사용하여 X를 저장하는 동안 org.apache.pig.piggybank.storage.avro.AvroStorage(); 컨테이너 오류가 발생했습니다. –

+0

을 확인하십시오. 스크립트 오류는 아니지만 YARN 컨테이너 일 가능성이 큽니다. 클러스터 관리자에게 문제를 해결하도록 요청하십시오. –