使用pig,如何解析和比较分组项目

时间:2014-03-24 18:46:55

标签: apache-pig

我有

A  B
a, d
a, e
a, y
z, v
z, k
z, o

等等。
B列的类型为cararray,包含由&。

分隔的键值对

例如 - d =' abc = 1& c = 1& p =成功'

我想弄清楚 -

假设 -

d =' abc = 1& c = 1& xyz = 23423423'

e =' xyz = 1& it = ssd'

y =' abc = 1& c = 1& p =成功'

对于每一个' a'我想弄清楚它是否有b列包含相同的abc值并且c = 1且p =成功。我还想从d和y中提取abc和c的值。

例如,让我们看一下上面的例子 -

d包含abc = 1和c = 1

y包含abc = 1和p =成功

所以这满足了我正在寻找的东西,即给定的' a'我有相同的abc值,c = 1,p =成功。

我开始分组我的数据:

grouped = group data BY (A, B);

给了我

a, (a,b)(a,e)(a,y)
z, (z,v)(z,k)(z,o)

但在此之后,我对如何比较每组中的数据以使上述条件得到满足一无所知。

对此有任何帮助表示赞赏。

如果您希望我进一步澄清我的问题,请告诉我。

1 个答案:

答案 0 :(得分:0)

由于您只关心查询字符串中的某些字段(我假设它是什么),您将需要使用FOREACH和STRSPLIT拆分数据。将它展平,这样你就可以看到这样的东西 (a,b)其中b是来自查询ex的单个键/值:abc = 1 过滤掉您不关心的键/值对,将它们重新连接在一起,然后按组合的键/值对进行分组。这将为您提供每个具有相同b的列表,其中b仅包含abc = X,c = 1且p =成功