2013-08-21 45 views
0

如果我寫與構造作爲輸入的Apache Pig Load Function Bag可能嗎?

MyLoadFunction(String someOptions, DataBag myBag) 

定製的負載功能我怎麼能執行此功能與piglatin?

X = load 'foo.txt' using MyLoadFunction('myString', myBagAlias); 

這不起作用,它甚至有可能嗎?

謝謝

+0

你想做什麼? (你的輸入是什麼?) –

+0

嗨,我試圖做到這一點:http://stackoverflow.com/questions/18354115/pig-latin-program-with-special-load-function ...我的輸入是一個HBase錶行。在這一行是一個列名稱的地圖。我把這張地圖變成了一個袋子。這個包裏的名字是另一個表的rowkeys。現在我嘗試獲取hbase數據庫中相關行的每個名稱。 –

回答

0

我不確定你的需要是否適合豬。豬全部是關於裝載大量數據,然後通過管道傳輸數據。這聽起來像是你想要更程序化的東西,加載少量的數據,做一些處理,根據它做出決定,然後按照該算法完成。

所以我不確定這是你最好的方式,但你可以嘗試編寫一個UDF來訪問HBase並獲取你需要的數據。 LOAD在這裏不合適,因爲LOAD不會返回一個包,它會返回一個Pig期望您通過一些轉換進行的關係。但是您可以將一個包作爲輸入傳遞給UDF,然後在該UDF內部執行您想要執行的HBase查找和處理。

更多的生豬方式是將所有相關的HBase數據加載到一個或多個關係中,然後根據需要執行JOIN以合併您想要的數據片段。

+0

Thansk爲您解答。我試圖建立我自己的UDF。在UDF內部,我使用hbase api來獲取相關的行/列,但是我遇到了非常奇怪的錯誤,例如UDF只處理一些包的項目。我認爲你是對的,在這裏使用UDF並不是最好的主意。 –