比较pig中的列值

iszxjhcz  于 2021-06-25  发布在  Pig
关注(0)|答案(1)|浏览(218)

我是新来的Pig和尝试学习Pig。我想比较两列以确定两列中是否都存在一个值。我用java编写了一个示例程序来完成同样的任务。现在,我正在尝试将这个程序转换为pig。

int [][] arr = {{1,2},{2,1},{3,2},{2,3}};
for (int i=0; i<arr.length; i++)
 for (int j=0; j<arr.length; j++)
  if (arr[j][0] == arr[i][1])
   System.out.println("found");
  else
   System.out.println("not found");

到目前为止,我已经写了

grunt> read_file = LOAD 'file.txt' AS (i:int, j:int);
grunt> DUMP read_file;
(1,2)
(2,1)
(3,2)
(2,3)
grunt> grp = GROUP read_file BY $0;
grunt> dump grp;
(1,{(1,2)})
(2,{(2,1),(2,3)})
(3,{(3,2)})

比较int的第一个值和bag中每个关系的第二个值应该得到相同的结果。

i2byvkas

i2byvkas1#

在foreach循环中可以使用如下条件: processed_file = FOREACH read_file GENERATE (i==j?i:'') AS i, (i==j?i:'') AS j ; 在“找不到”的情况下,这将为您提供空元组。使用filter过滤掉空元组。

相关问题