我有两个关系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拉丁语有关?
我有两个关系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拉丁语有关?
2条答案
按热度按时间rwqw0loc1#
恐怕没有西塔加入Pig。你可以做一个交叉连接,然后是一个过滤器。警惕由此产生的数据爆炸。
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进行过滤。我选择了第二种方式,但是这并不总是一种加入的方式。