【发布时间】:2012-12-18 23:00:43
【问题描述】:
我有一个自定义的MyInputFormat 来处理multi-lined inputs 的记录边界问题。但是当我将MyInputFormat 放入我的UDF 加载函数时。如下:
import org.apache.hadoop.mapreduce.InputFormat;
public class EccUDFLogLoader extends LoadFunc {
@Override
public InputFormat getInputFormat() {
System.out.println("I am in getInputFormat function");
return new MyInputFormat();
}
}
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
public class MyInputFormat extends TextInputFormat {
public RecordReader createRecordReader(InputSplit inputSplit, JobConf jobConf) throws IOException {
System.out.prinln("I am in createRecordReader");
//MyRecordReader suppose to handle record boundary
return new MyRecordReader((FileSplit)inputSplit, jobConf);
}
}
对于每个映射器,它会打印出I am in getInputFormat function,但不会打印出I am in createRecordReader。我想知道是否有人可以提供有关如何将我的服装 MyInputFormat 连接到 PIG 的 UDF 加载器的提示?非常感谢。
我在 Amazon EMR 上使用 PIG。
【问题讨论】:
-
尝试在
createRecordReader方法上添加@Override注释以确保您拥有正确的签名
标签: hadoop user-defined-functions apache-pig amazon-emr