我有一个用 Java 编写的用户定义函数 (UDF) 来解析日志文件中的行并将信息返回给 pig,因此它可以完成所有处理。
它看起来像这样:
public abstract class Foo extends EvalFunc<Tuple> {
public Foo() {
super();
}
public Tuple exec(Tuple input) throws IOException {
try {
// do stuff with input
} catch (Exception e) {
throw WrappedIOException.wrap("Error with line", e);
}
}
}
我的问题是:如果它抛出 IOException,它会完全停止,还是会返回其他不抛出异常的行的结果?
示例:我在猪中运行它
REGISTER myjar.jar
DEFINE Extractor com.namespace.Extractor();
logs = LOAD '$IN' USING TextLoader AS (line: chararray);
events = FOREACH logs GENERATE FLATTEN(Extractor(line));
使用此输入:
1.5 7 "Valid Line"
1.3 gghyhtt Inv"alid line"" I throw an exceptioN!!
1.8 10 "Valid Line 2"
它会处理这两行并且'logs'会有2个元组,还是会在火灾中死去?