2
我有一個UDF jar,它通過Pig接受一個字符串作爲輸入。這個Java文件致力於通過豬罰款運行的「硬編碼」的字符串,比如這個命令使用Pig運行字符串通過Java使用Pig
B = foreach f generate URL_UDF.mathUDF('stack.overflow');
能不能給我我所期望的輸出
我的問題是我想從一個文本文件中獲取信息並使用我的UDF。我加載了一個文件,並希望在我已經加載到UDF的那個文件中傳遞數據。
LoadData = load 'data.csv' using PigStorage(',');
f = foreach LoadData generate $0 as col0, $1 as chararray
$ 1是一個char陣列被用來我所需要的列和研究數據類型(http://pig.apache.org/docs/r0.7.0/piglatin_ref2.html#Data+Types)。
然後我嘗試使用以下命令 B = foreach f生成URL_UDF.mathUDF($ 1);
傳遞數據放進玻璃瓶從而未能說明
java.lang.ClassCastException: org.apache.pig.data.DataByteArray cannot be cast to java.lang.String
如果有人有任何解決方案,這將是巨大的。
我運行的Java代碼如下
package URL_UDF;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.pig.FilterFunc;
import org.apache.pig.data.Tuple;
import org.apache.pig.EvalFunc;
import org.apache.pig.PigWarning;
import org.apache.pig.data.Tuple;
import org.apache.commons.logging.Log;
import org.apache.*;
public class mathUDF extends EvalFunc<String> {
public String exec(Tuple arg0) throws IOException {
// TODO Auto-generated method stub
try{
String urlToCheck = (String) arg0.get(0);
return urlToCheck;
}catch (Exception e) {
// Throwing an exception will cause the task to fail.
throw new IOException("Something bad happened!", e);
}
}
}
感謝
感謝您的回答,不幸的是這仍然導致它失敗。 – user2931635
然後這可能是您的UDF中的錯誤。你能發佈代碼嗎? – Frederic
上面添加了這是我目前正在運行的一個簡單示例。我知道它什麼都不做,但即使這樣也失敗了。 – user2931635