Apache pig 使用pig,我如何解析和处理分组项

Apache pig 使用pig,我如何解析和处理分组项,apache-pig,Apache Pig,我有 等等。 列B是cararray类型,包含由&分隔的键值对 例如-d='abc=1&c=1&p=success' 我想弄明白什么-- 假设- d='abc=1&c=1&xyz=23423' e='xyz=1&it=ssd' y='abc=1&c=1&p=success' 对于每个“a”,我想知道它是否有b列,其中包含相同的abc值,并且有c=1和p=success。我还想从d和y中提取abc和c的值 例如,让我们以上面的例子为例- d包含abc=1和c=1 y包含abc=1和p=succes

我有

等等。
列B是cararray类型,包含由&分隔的键值对

例如-d='abc=1&c=1&p=success'

我想弄明白什么--

假设-

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

e='xyz=1&it=ssd'

y='abc=1&c=1&p=success'

对于每个“a”,我想知道它是否有b列,其中包含相同的abc值,并且有c=1和p=success。我还想从d和y中提取abc和c的值

例如,让我们以上面的例子为例-

d包含abc=1和c=1

y包含abc=1和p=success

所以这满足了我的要求,也就是说,对于给定的“a”,我有相同的abc值,c=1,p=success

我从分组数据开始:

A  B
a, d
a, e
a, y
z, v
z, k
z, o
这让我

grouped = group data BY (A, B);
但在这之后,我不知道如何比较各组内的数据,以满足上述条件

在此方面的任何帮助都将不胜感激


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

因为您只关心查询字符串中的一些字段(我假设是这样),所以您需要使用FOREACH和STRSPLIT分割数据。把它展平,这样你就有了这样的东西 (a,b)其中b将是查询中的单个键/值ex:abc=1
筛选出您不关心的键/值对,将它们重新连接在一起,然后按组合的键/值对分组。这将为您提供一个具有相同b的每个a的列表,其中b仅包含abc=X、c=1和p=success

您应该从将b列中的数据提取到地图开始。可能最好使用UDF,但也可以使用正则表达式。
a, (a,b)(a,e)(a,y)
z, (z,v)(z,k)(z,o)