如何在pig中加入条件?

qjp7pelc  于 2021-06-21  发布在  Pig
关注(0)|答案(2)|浏览(507)

我有两个关系a,b

DESCIBE A
A:{ip_num:long,data:int}

DESCIBE B
B:{ip_start_num:long,ip_end_num:long}

我想要产品:

C:{group:(ip_start_num:long, ip_end_num:long), B:{(ip_num:long, data:int)}}

where ip_num >ip_start_num && ip_num < ip_end_num

有没有可能和Pig拉丁语有关?

rwqw0loc

rwqw0loc1#

恐怕没有西塔加入Pig。你可以做一个交叉连接,然后是一个过滤器。警惕由此产生的数据爆炸。

qq24tv8q

qq24tv8q2#

你需要做一个 FILTER 嵌套对象中的操作 FOREACH 然而;似乎有一个bug,这样的句子甚至无法解析。https://issues.apache.org/jira/browse/pig-1798. 这个帖子也提到了同样的问题。在pig的嵌套foreach中使用filter
昨天我遇到了同样的问题,有两种解决方案:第一种是编写一个udf来按ip范围进行过滤。第二种方法是在两个关系之间找到一个简单的连接,这样你就可以拥有另一个关系: D:{ip_num:long,data:int,ip_start_num:long,ip_end_num:long} .
在那里,您可以不使用嵌套的foreach进行过滤。我选择了第二种方式,但是这并不总是一种加入的方式。

相关问题