2012-06-27 77 views
1

我有兩個關於A,B如何在豬中添加條件JOIN?

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 

是任何可能性做PigLatin?

回答

0

但是,您需要在嵌套的FOREACH內執行FILTER操作;它似乎有一個錯誤,所以這樣的句子甚至不會解析。 https://issues.apache.org/jira/browse/PIG-1798。這篇文章也提到了同樣的問題。 USING Filter in a Nested FOREACH in PIG

昨天我遇到了同樣的問題,有兩個解決方案可用:第一個是編寫一個UDF來通過IP範圍進行過濾。第二種是找到兩種關係之間簡單連接的方式,這樣你就可以擁有這種關係:

D:{ip_num:long,data:int,ip_start_num:long,ip_end_num:long}

在那裏你可以過濾沒有嵌套的foreach。我選擇了第二種選擇,但它並不總是一種加入方式。

0

沒有theta連接在豬我害怕。你可以做一個交叉連接,然後是一個過濾器。警惕產生的數據爆炸。