Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ApachePig:包中最常见的值_Java_Apache Pig - Fatal编程技术网

Java ApachePig:包中最常见的值

Java ApachePig:包中最常见的值,java,apache-pig,Java,Apache Pig,我的数据如下所示: SWE "{(Figure Skating),(Tennis),(Tennis)}" GER "{(Figure Skating),(Figure Skating)}" 我想制作这个: SWE Tennis GER "Figure Skating" 关系符号:x 字段1的符号:NOC 第2栏的符号:运动 最明显的想法是生成计数并按最大计数进行过滤,但我甚至不知道如何在fieldsports上迭代。如何在行动中做到

我的数据如下所示:

SWE "{(Figure Skating),(Tennis),(Tennis)}"
GER "{(Figure Skating),(Figure Skating)}"
我想制作这个:

SWE Tennis
GER "Figure Skating"
关系符号:
x

字段1的符号:
NOC

第2栏的符号:
运动


最明显的想法是生成计数并按最大计数进行过滤,但我甚至不知道如何在field
sports
上迭代。如何在行动中做到这一点?

我建议使用DataFu统计包中每项运动的实例。然后,您可以在每个包中找到最高计数。一种方法是按计数订购“运动”包,然后使用

我在展平模式中使用了CountEach,因为这意味着我们不会在结果中“嵌套”运动名称,但如果愿意,您可以在不使用“展平”的情况下定义UDF

DEFINE CountEachFlatten datafu.pig.bags.CountEach('flatten');
DEFINE FirstTupleFromBag datafu.pig.bags.FirstTupleFromBag();

sports_counted = FOREACH x GENERATE
    NOC,
    CountEachFlatten(sports) AS sports:{(sport_name, sport_count)};

max_sports = FOREACH sports_counted {
    ordered_sports = ORDER sports BY sport_count DESC;
    GENERATE
    NOC,
    FirstTupleFromBag(ordered_sports, null);
}

我建议使用DataFu统计包中每项运动的实例。然后,您可以在每个包中找到最高计数。一种方法是按计数订购“运动”包,然后使用

我在展平模式中使用了CountEach,因为这意味着我们不会在结果中“嵌套”运动名称,但如果愿意,您可以在不使用“展平”的情况下定义UDF

DEFINE CountEachFlatten datafu.pig.bags.CountEach('flatten');
DEFINE FirstTupleFromBag datafu.pig.bags.FirstTupleFromBag();

sports_counted = FOREACH x GENERATE
    NOC,
    CountEachFlatten(sports) AS sports:{(sport_name, sport_count)};

max_sports = FOREACH sports_counted {
    ordered_sports = ORDER sports BY sport_count DESC;
    GENERATE
    NOC,
    FirstTupleFromBag(ordered_sports, null);
}