【发布时间】:2016-06-08 04:46:04
【问题描述】:
我编写了一个 UDF,它读取输入文件并将数据分离为字符串和整数或字符串和双精度。
我的 UDF 工作正常。我还编写了一个 Pig 脚本来在 HDFS 上使用上述 jar。
现在我想将此代码与 Talend for Big Data 集成。 我怎样才能做到这一点。
UDF 中的 java 代码如下:
package com.test.udf;
import java.io.IOException;
import org.apache.pig.EvalFunc;
import org.apache.pig.data.Tuple;
import org.apache.pig.data.TupleFactory;
public class CheckDataType extends EvalFunc<Tuple> {
@Override
public Tuple exec(Tuple input) throws IOException {
// TODO Auto-generated method stub
String valString = null;
Integer valInt = null;
Double valDouble =null;
String str = (String) input.get(0);
Tuple outputTuple =TupleFactory.getInstance().newTuple(2);
if (str != null){
try{
valInt = Integer.parseInt(str);
outputTuple.set(0, valString);
outputTuple.set(1, valInt);
}
catch(Exception e){
try{
valDouble = Double.parseDouble(str) ;
outputTuple.set(0, valString);
outputTuple.set(1, valDouble);
}
catch(Exception ew){
outputTuple.set(0, str);
outputTuple.set(1, null);
}
}
}
return outputTuple;
}
}
另外我写的猪脚本如下:
REGISTER 'CONVERT.jar';
data_load = LOAD '/tmp/input/testfile.txt' USING PigStorage(',') AS (col1:chararray, col2:chararray, col3:chararray, col4:chararray, col5:chararray);
data_grp = GROUP data_load BY ($input_col);
data_flatten = FOREACH data_grp GENERATE FLATTEN(com.test.udf.CheckDataType(*));
rmf /tmp/output;
STORE data_flatten INTO '/tmp/output' USING PigStorage(',');
如何将其集成到 Talend for Big Data 中。
【问题讨论】:
-
Talend 中有 Pig 组件。你看过这些例子吗?
-
我看过那些。我该如何使用它。
-
@user3454116 您是否尝试将 jar 放在部署 Talend 作业的同一服务器中并使用完整路径进行注册?
-
@54l3d: 能否请您描述一下组件的流程和配置,以便我检查一下。
标签: hadoop apache-pig talend bigdata