2013-10-31 1 views
0

HDP 2.0을 사용하고 간단한 돼지 스크립트를 사용하고 있습니다.HDP2.0의 하이브 칼럼 로더

나는 아래 항아리를 등록하고 난 후 (스키마 업데이트) 아래의 코드를 실행하고 - 항상

register /usr/lib/pig/piggybank.jar; 
     register /usr/lib/hive/lib/hive-common-0.11.0.2.0.5.0-67.jar; 
     register /usr/lib/hive/lib/hive-exec-0.11.0.2.0.5.0-67.jar; 

     A = LOAD '/apps/hive/warehouse/test.db/hivetables' USING   
     org.apache.pig.piggybank.storage.HiveColumnarLoader('id int, name string,age 
     int,create_dt string,timestamp string,accno int'); 

     F = FILTER A BY (id == 85986249); 

     STORE F INTO '/user/test/Pigout' USING PigStorage(); 

문제이며, F의 값이 하이브 테이블에서 사용할 수 있지만, 결과를 출력에 0 개의 레코드를 씁니다. 그러나 모든 레코드를 A로로드 할 수 있습니다.

기본적으로 필터 기능이 작동하지 않습니다. 내 하이브 테이블이 분할되지 않았습니다. 나는이 문제가 HiveColumarLoade에있을 수 있지만 그것이 무엇인지 파악할 수 없다고 믿습니다.

해결책을 알고 계시다면 알려주십시오. 나는 이것으로 많은 어려움을 겪고있다.

도움을 주셔서 감사합니다.

+0

로드중인 테이블의 전체 스키마가 무엇을 필요로하는 실제 값을 처리하기 위해 그런 말을하는 것 같다

이 시도? 게시하십시오. –

+0

안녕하세요, 나는 또한 스키마를 게시했습니다. 감사! – user2732748

답변

0

pig 0.12 documentation을 기반으로합니다. HiveColumnarLoader는 비 파티션 값을 필터링하기 전에 중간 관계가 필요합니다. ID가 문제가되는 파티션이 아니라는 것을 감안할 때.

A = LOAD '/apps/hive/warehouse/test.db/hivetables' USING   
     org.apache.pig.piggybank.storage.HiveColumnarLoader('id int, name string,age 
     int,create_dt string,timestamp string,accno int'); 

B = FOREACH GENERATE A.id, A.name, A.age, A.create_dt, A.timestamp, A.accno; 

F = FILTER A BY (id == 85986249); 

     STORE F INTO '/user/test/Pigout' USING PigStorage(); 

문서 모두가 당신이 중간 관계 B.