Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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
Apache pig 将袋子中两个元组中的两个数字分开_Apache Pig - Fatal编程技术网

Apache pig 将袋子中两个元组中的两个数字分开

Apache pig 将袋子中两个元组中的两个数字分开,apache-pig,Apache Pig,对不起,标题太难看了。我在这里试图做的是为了一个关系,比如: {group: chararray,G: {(query: chararray,type: chararray,count: long)}} 这是“分组依据”的结果,每个键最多有2个元组,按“类型”区分。例如,一个示例可能如下所示: {group:'abc', G:{('abc', 'A', 10), ('abc', 'B', 20)} 现在,我想对每组进行(A中计数)/(B中计数)的数学运算。我对猪很陌生,尝试过不同的方法,但都

对不起,标题太难看了。我在这里试图做的是为了一个关系,比如:

{group: chararray,G: {(query: chararray,type: chararray,count: long)}}
这是“分组依据”的结果,每个键最多有2个元组,按“类型”区分。例如,一个示例可能如下所示:

{group:'abc', G:{('abc', 'A', 10), ('abc', 'B', 20)}
现在,我想对每组进行(A中计数)/(B中计数)的数学运算。我对猪很陌生,尝试过不同的方法,但都做不好。有什么建议吗?我试过一些东西:

I = group G by query;
J = foreach I {
CC=filter G by type=='A';
VV=filter G by type=='B';
--generate group, (float)(FLATTEN(CC.count))/(float)(FLATTEN(VV.count)) as CTR, CC, VV ;
--or generate group, (float)(FLATTEN(CC.count))/FLATTEN(VV.count), CC.count, VV.count;
--or generate group, CC.count/VV.count, CC.count, VV.count;
}


没有一个有效。

如果您对数据有先决条件,比如“每个键最多有2个元组”,那么我建议不要使用
组,因为它不是为处理您所想的内容而设计的。相反,您可以
将数据集拆分为两部分,然后
将这些部分重新连接在一起。这样可以保持每个键的元组笔直。例如:

SPLIT G INTO typeA IF type == 'A', typeB IF type == 'B';
I = JOIN typeA BY query, typeB BY query;
J = FOREACH I GENERATE typeA::query, (float)typeA::count/typeB::count;