Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.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
Mapreduce Piglatin查找一列是否包含另一列的内容_Mapreduce_Apache Pig - Fatal编程技术网

Mapreduce Piglatin查找一列是否包含另一列的内容

Mapreduce Piglatin查找一列是否包含另一列的内容,mapreduce,apache-pig,Mapreduce,Apache Pig,我有一个看起来很简单的问题,但我就是想不出来 我有如下数据: A (B, C, A) B (X, Y, Z) C (F, C, D) 我使用Pig拉丁语检查第一列中的文本是否出现在第二列中 这是我目前的代码: Labels = LOAD 'example.txt' USING PigStorage('\t'); Projected = FOREACH Labels GENERATE $0 AS id, $1 AS group; X = FILTER Projected BY (group

我有一个看起来很简单的问题,但我就是想不出来

我有如下数据:

A (B, C, A)
B (X, Y, Z)
C (F, C, D)
我使用Pig拉丁语检查第一列中的文本是否出现在第二列中

这是我目前的代码:

Labels = LOAD 'example.txt' USING PigStorage('\t');

Projected = FOREACH Labels GENERATE $0 AS id, $1 AS group;

X = FILTER Projected BY (group matches '.*(chararray)id.*');

STORE X INTO '/test' USING PigStorage(',');
我期望的结果是:

A (B, C, A)
C (F, C, D)
我还尝试将“*”连接到id,但没有效果


我已经被这件事困扰了很长一段时间,任何帮助都将不胜感激。谢谢

有两个问题,一个是因为变量组是保留字而无法命名,另一个是匹配字符串“(chararray)id”,而不是id

此外,我认为永远不要按索引分配变量,只要在load语句中定义变量,就可以删除投影别名

Labels = LOAD 'example.txt' USING PigStorage('\t') AS
   (id:chararray, stringvalue:chararray);
X = FILTER Labels BY (stringvalue matches CONCAT(CONCAT('.*',id),'.*'));
STORE X INTO '/test' USING PigStorage(',');

经过测试,它成功了。

非常感谢!这很有帮助。:)记住,CONCAT可以接受2个以上的参数。