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)