arrays - hadoop pig 加入任何匹配的元组值

标签 arrays join hadoop apache-pig

我是Pig的新手,正在尝试使用它来处理数据集。我有一组看起来像的记录

id    elements
--------------
1     ["a","b","c"]
2     ["a","f","g"]
3     ["f","g","h"]

我的想法是我要创建具有任何重叠元素的元素的元组。如果元素只是单个项目而不是数组,我可以做一个简单的连接,例如:
A = LOAD 'mydata' ...
B = FOREACH A GENERATE id as id_2, elements as elements_2;
C = JOIN A BY elements, B BY elements_2;

但是由于elements是一个数组,因此如果只有部分重叠,则此方法将无效。关于如何在 pig 中这样做的任何想法?

预期的输出将给出具有重叠的元组:
(1,2)
(2,3)

最佳答案

我认为无法为此使用JOIN
一种(不太好用)的解决方案是对两个关系进行CROSS,然后执行FILTER操作。FILTER条件可以是UDF或某种regex_extract_all并与产生的字段匹配。如果数组的大小始终为3,我可能会选择regex_extract_all解决方案。

关于arrays - hadoop pig 加入任何匹配的元组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22498259/

相关文章:

java - 如何构建一个数组并将其与另一个数组进行比较?

MySQL:如何加速连接?

MySQL DISTINCT 函数没有按预期工作

c++ - 用 std/tr1/boost::array 替换内置数组总是安全的吗?

c# - 如何使用 Litjson 解析 json 数组?

javascript - 如何将数组中的前一项附加到下一项?

join - 如何将 parent 和 child 加入Elasticsearch

hadoop - 将Pig 0.16.0 UDF与Eclipse集成

hadoop - 从 Eclipse 访问 HDFS 文件

dynamic - 在 Hadoop 中使用动态分布式缓存