2013-07-05 23 views
0

我是豬腳本編程的新手,想知道我能用它做什麼。我知道pig更像sql,它可以幫助你獲取數據並操縱它,但是有什麼方法可以調用外部服務或API來獲取數據並將它與從pigStorage()或cassandraStorage()中獲取的數據一起處理?從PIG腳本語言中調用外部API(curl like)

回答

0

豬不是SQL的同伴,因爲它是一種腳本語言,可以靜靜地爲大量常見的mapreduce模式提供抽象化......但是這就是分裂的頭髮。如果你想要做的事就像調用外部服務的話,這樣做是寫(或複用)一個eval UDF函數的方式。有幾種類型的UDF,它們基本上都是Java的退出程序,可以讓你以任何你認爲合適的方式編寫你的函數。

但要小心。對每個元組執行一次外部服務的調用可能會花費太多時間。如果外部電話數量很少,那麼eval UDF功能可能會起作用。如果你想使這些調用了大量的元組則考慮使用InputFormatType和負載UDF一次全部讀取外部數據,然後使用普通豬運算符和語句的原始數據加入。

+0

真棒,謝謝克里斯。我一定會嘗試這個。我們正在使用的跟蹤服務,收集用戶查看,詢問和所有比我們要處理基於組使用數據屬於。我們不存儲組信息,因爲我們正在考慮在運行地圖縮減作業時獲取該信息。希望它起作用 – plzdontkillme

+0

嗨克里斯,我正在寫我的自定義UDF和Extedning LoadFunc,但它看起來像1)它需要一些文件路徑告訴加載數據,但我想調用端點不是文件2)它內部試圖分裂數據 ?這在我的情況是不正確的。 3)我應該考慮EvalFunc,但我想一次加載來自端點的所有數據。所以我很困惑應該做些什麼。 4)它給了我「錯誤2118:沒有在作業中指定輸入路徑」我應該如何在Job中傳遞? – plzdontkillme