0
나는 아래의 테스트 데이터를 가지고 있습니다.돼지의 칼럼을 가로 지르는 필드의 합
A B C
M O
M M M
M M M
N O
P N
I은 M = 7, N = 2, O = 2, P = 1 등, 각 값의 카운트를 얻고 자하는 것이다. 여기서 A, B 및 C는 열 제목입니다. 아래 코드를 작성했습니다.
test= LOAD 'testdata' USING PigStorage(',') as(A:chararray,B:chararray,C:chararray);
values = FOREACH test GENERATE A==''?'null':(A is null?'null':A)) as A,(B==''?'null':(B is null?'null':B)) as B,(C==''?'null':(C is null?'null':C)) as C;
grp = GROUP values ALL;
A = FOREACH grp {
B =FILTER test.A=='M' OR test.B=='M' OR test.C=='M';
C =FILTER test.A=='N' OR test.B=='N' OR test.C=='N';
D =FILTER test.A=='O' OR test.B=='O' OR test.C=='O';
E =FILTER test.A=='P' OR test.B=='P' OR test.C=='P';
GENERATE group, COUNT(B), COUNT(C),COUNT(D),COUNT(E);
};
"출력에 스칼라에 둘 이상의 행이 있습니다."라는 오류가 나타납니다. 모든 입력이 도움이 될 것입니다 !!
카운트 (A : chararray, B : chararray, C : chararray 참조). 위에 언급 한 것처럼 1 필드가 아닙니다. –
스크립트를 실행 한 적이 있습니까? 단어별로 그룹화하면 각각의 고유 한 문자가 그룹화되고 각 문자에 대한 개수가 제공됩니다. –
그게 효과가있다. 필자는 '라인'을 단일 필드로 간주하여 토큰 화 chararray의 병합을 실현하지 않았습니다. –