【发布时间】:2014-03-24 18:46:54
【问题描述】:
我有
A B
a, d
a, e
a, y
z, v
z, k
z, o
等等。
B 列是 cararray 类型,包含用 & 分隔的键值对。
例如 - d = 'abc=1&c=1&p=success'
我想弄清楚的——
假设 -
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 =success 的值相同。
我开始对我的数据进行分组:
grouped = group data BY (A, B);
这给了我
a, (a,b)(a,e)(a,y)
z, (z,v)(z,k)(z,o)
但在此之后,我对如何比较每个组内的数据以满足上述条件一无所知。
对此的任何帮助表示赞赏。
如果您希望我进一步澄清我的问题,请告诉我。
【问题讨论】:
-
您应该首先将 B 列中的数据提取到地图中。可能最好用 UDF 来做,但你也可以用正则表达式来做。
标签: apache-pig