Apache pig 根据Pig脚本中的sum查找5个最受欢迎的项目
我正试图找到三个最受欢迎的地点,拥有最多的点击率。 所以我需要查看每个位置的tripCount总数,并返回最大的n 我的资料如下:Apache pig 根据Pig脚本中的sum查找5个最受欢迎的项目,apache-pig,Apache Pig,我正试图找到三个最受欢迎的地点,拥有最多的点击率。 所以我需要查看每个位置的tripCount总数,并返回最大的n 我的资料如下: LocationID tripCount tripDistance 101 40 4.6 203 29 1.3 56 25 9.3 101 17 4.5 66 5
LocationID tripCount tripDistance
101 40 4.6
203 29 1.3
56 25 9.3
101 17 4.5
66 5 1.1
13 5 0.5
203 10 1.2
558 8 0.5
56 10 5.5
所以我期待的结果是:
101 57
203 39
56 35
到目前为止,我的代码是:
B = GROUP UNION_DATA BY DOLocationID;
C = FOREACH B {
DA = ORDER UNION_DATA BY passenger_count DESC;
DB = LIMIT DA 5;
GENERATE FLATTEN(group), FLATTEN(DB.LocationID), FLATTEN(DB.dropoff_datetime);
}
我遗漏了什么?我需要做什么才能得到预期的结果?下面的一段代码应该可以得到您想要的结果。 为了更好的理解和可读性,我将语句分解为简单的部分。另外,您提供的别名和代码似乎不完整,所以我完全从头开始重新编写 LocationID、tripCount、tripDistance
cat > trip_data.txt
101,40,4.6
203,29,1.3
56,25,9.3
101,17,4.5
66,5,1.1
13,5,0.5
203,10,1.2
558,8,0.5
56,10,5.5
清管器代码:
A = load '/home/ec2-user/trip_data.txt' using PigStorage(',') as (LocationID,tripCount,tripDistance);
describe A;
B = GROUP A BY LocationID;
describe B;
dump B;
C = FOREACH B GENERATE group, SUM(A.tripCount);
describe C;
dump C;
D = ORDER C BY $1 DESC;
describe D;
dump D;
RESULT = LIMIT D 3;
describe RESULT;
dump RESULT;