2015-06-27 68 views
1

我寫了一個UDF,它使用Joda Time。我將它作爲pom.xml中的依賴項包含進來。當我運行我的豬腳本時出現錯誤Pig UDF中的Java依賴關係

ERROR 2998: Unhandled internal error. org.joda.time.LocalDate.parse(Ljava/lang/String;)Lorg/joda/time/LocalDate; 

我對java,maven和hadoop很新。我如何將joda捆綁到我在集羣上運行的jar中(像c/C++中鏈接的靜態)?

這是不是重複的how to include external jar file using PIG,因爲我不能使用-D選項並且在豬腳本中註冊Joda時間沒有任何影響。

+0

可能重複的[如何使用PIG包含外部jar文件](http://stackoverflow.com/questions/10423990/how-to-include-external-jar-file-using-pig) – NotGaeL

+0

沒有我的UDF是包括並運行。 – ManuelSchneid3r

+0

你的代碼拋出java.lang.NoClassDefFoundError異常。找到缺少的jar(joda-time),然後將其作爲運行時依賴關係包含在您的豬腳本中。 – NotGaeL

回答

1

問題是豬自帶Joda 1.6,其中LocalDate沒有parse()方法。最簡單和最安全的解決方案是在maven中使用1.6,並用1.6 Joda Time重寫代碼。

+0

你引用了哪一個豬版本?我會稍後再試 – ManuelSchneid3r

+0

謝謝。我花了大約20個小時纔得到這個工作。互聯網上的所有提示都是錯誤的。 * NO *需要傳遞額外的jar,* NO *需要註冊一個jar。只需使用正確的API。你可以詳細說明UDF如何使用Pig中的joda時間,這對我來說仍然是一個謎。 (來自c/C++) – ManuelSchneid3r