multi-lined inputs에 대한 레코드 경계 문제를 처리하는 것으로 가정되는 사용자 지정 MyInputFormat
이 있습니다. 그러나 MyInputFormat
을 내 UDF로드 기능에 넣었을 때. 다음과 같이 :PIG가 내 사용자 지정 InputFormat을 읽지 않습니다
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 로더에 연결하는 방법에 대한 힌트를 제공 할 수 있는지 궁금합니다. 고마워.
아마존 EMR에서 PIG를 사용하고 있습니다.
시도를 확장 할 필요가있다 'createRecordReader' 메쏘드에서'@Orride' 메쏘드에 주석을 달아 올바른 서명을 보장합니다 –