두 개의 열로 그룹화 한 다음 두 개의 다른 필드를 합산하는 데 필요한 데이터가 있습니다. 이 네 열의 이름이 OS, device, view, click이라고 가정합니다. 기본적으로 각 OS 및 기기의 수, 조회수 및 클릭 수를 알고 싶습니다.
(2,3346,1,)
(3,3953,1,1)
(25,4840,1,1)
(2,94840,1,1)
(14,0526,1,1)
(37,4864,1,)
(2,7353,1,)
이것이 내가 지금까지 가지고있는 것입니다.
A is data: OS,device,view,click
B = GROUP A BY (OS,device);
Result = FOREACH B {
GENERATE group AS OS,device, SUM(view) AS visits, SUM(click) AS clicks;};
dump Result;
이것은 작동하지 않습니다. 오류 메시지는 다음과 같습니다. Projected field [OS] is not exist in schema : group : tuple (OS : int, device : long), B : bag {: tuple (OS : int, device : long, view : int, click : int)}입니다.
테스트 된 코드는 다음과 같습니다. FLATTEN이 누락되었습니다.
A = LOAD '/user/root/pig_data' using PigStorage(',') AS (OS, device, view, click);
B = GROUP A BY (OS, device);
RESULT = FOREACH B GENERATE FLATTEN(group) AS (OS, device), SUM(A.view) as views, SUM(A.click) as clicks;
dump RESULT;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다