2014-09-26 4 views
1

안녕하세요, 누군가는 왜 FILTER 명령이 다음 코드에서 아무 것도 반환하지 않는 이유를 알고 있습니까? 고마워! 왜 PIG FILTER는 아무 것도 반환하지 않습니까?

data = LOAD 'sample1.txt' 
     AS (campaign_id:chararray, 
     date:chararray, 
     time:chararray, 
     keyword:chararray, 
     display_site:chararray, 
       placement:chararray, 
     was_clicked:int, 
     cpc:int); 

count1 = FOREACH (GROUP data ALL) GENERATE COUNT(data); 
DUMP count1; 


clicked = FILTER data BY (was_clicked==1); 

DUMP clicked; 
count2 = FOREACH (GROUP clicked ALL) GENERATE COUNT(clicked); 
DUMP count2; 

나는 DUMP data을 시도하고 (was_clicked == 1) 일부 레코드가 참조하십시오. DUMP count1이 표시됩니다 (100). 이는 예상대로입니다.

DUMP clicked 아무 것도 표시되지 않았습니다. DUMP count2 아무 것도 표시되지 않았습니다. 내가 스크립트에서 문제를 볼 didnt는 $ pig -x local analysis1.pig

+0

당신이 덤프 COUNT1의 출력을 붙여 주실 래요? –

+0

안녕하세요 @ GauravPhapale 출력은 (100)입니다. 데이터를 다시 확인한 결과 데이터에 잘못된 스키마가 사용 된 것으로 나타났습니다. 사실 마지막 열이지만 하나는 contry : 데이터에서 chararray,하지만 was_clicked : int 계획에 썼습니다. 이것이 문제였습니다. 당신의 도움을 주셔서 감사합니다! –

답변

0

:

나는 로컬 모드에서 .pig 파일을했다. 잘 작동합니다. 샘플 입력을 붙여 넣을 수 있습니까?

input.txt 
aaa,1234,5678,bbb,ccc,ddd,2,100 
zzz,1234,5678,bbb,ccc,ddd,1,100 
xxx,1234,5678,bbb,ccc,ddd,1,100 
yyy,1234,5678,bbb,ccc,ddd,2,100 
jjj,1234,5678,bbb,ccc,ddd,1,100 
kkk,1234,5678,bbb,ccc,ddd,4,100 

PigScript :

data = LOAD 'input.txt' using PigStorage(',') 
     AS (campaign_id:chararray, 
     date:chararray, 
     time:chararray, 
     keyword:chararray, 
     display_site:chararray, 
     placement:chararray, 
     was_clicked:int, 
     cpc:int); 
count1 = FOREACH (GROUP data ALL) GENERATE COUNT(data); 
dump count1; 
clicked = FILTER data BY (was_clicked==1); 
dump clicked; 
count2 = FOREACH (GROUP clicked ALL) GENERATE COUNT(clicked); 
dump count2; 

output of count1: 
(6) 

Output of clicked: 
(zzz,1234,5678,bbb,ccc,ddd,1,100) 
(xxx,1234,5678,bbb,ccc,ddd,1,100) 
(jjj,1234,5678,bbb,ccc,ddd,1,100) 

Output of count2: 
(3) 
+0

안녕하세요 @ Sivasakthi Jayaraman 나는 그것을 다시 확인하고 LOAD 명령에 데이터의 잘못된 설명을 넣은 것을 발견했습니다. 마지막 하나의 열은 내 데이터에서 chararray입니다. 어리석은 질문에 대해 유감스럽게 생각합니다 ... (돼지 LOAD chararray를 int로 어떻게 만들었습니까?) –

+0

@YZhang, Hadoop은 READ를위한 스키마 정의를 사용하고 WRITE가 아니기 때문일 수 있습니다. 이것은 스키마 정의가 쓰기에 사용되는 RDBMS의 정반대입니다. – addicted20015

관련 문제