gpt4 book ai didi

hadoop - 在 Talend 中实现 UDF 和 Pig Script 逻辑

转载 作者:可可西里 更新时间:2023-11-01 16:44:37 24 4
gpt4 key购买 nike

我编写了一个 UDF,它读取输入文件并将数据分离为字符串和整数或字符串和 double 。

我的 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;

}

}

还有我写的 pig 脚本如下:

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 中。

最佳答案

更新的答案:

您需要将 pig 脚本拆分为 3 个组件,PigLoad、PigCode 和 PigStoreResult,并将它们连接起来。 UDF 可以作为代码或作为单独的 jar 包含在 PigLoad 组件中。

可在此处找到分步说明:https://www.evernote.com/l/AJONeXS0_sBNwpDfmPByJSUVS0vmAs04EGM

关于hadoop - 在 Talend 中实现 UDF 和 Pig Script 逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37693463/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com