我在我的 Java UDF 函数中使用了一个小映射文件,我想通过构造函数从 Pig 传递这个文件的文件名。
以下是我的 UDF 函数的相关部分
public GenerateXML(String mapFilename) throws IOException {
this(null);
}
public GenerateXML(String mapFilename) throws IOException {
if (mapFilename != null) {
// do preocessing
}
}
在 Pig 脚本中,我有以下行
DEFINE GenerateXML com.domain.GenerateXML('typemap.tsv');
这适用于本地模式,但不适用于分布式模式。我在命令行中将以下参数传递给 Pig
pig -Dmapred.cache.files="/path/to/typemap.tsv#typemap.tsv" -Dmapred.create.symlink=yes -f generate-xml.pig
我收到以下异常
2013-01-11 10:39:42,002 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: Pig script failed to parse:
<file generate-xml.pig, line 16, column 42> Failed to generate logical plan. Nested exception: java.lang.RuntimeException: could not instantiate 'com.domain.GenerateXML' with arguments '[typemap.tsv]'
知道我需要改变什么才能让它工作吗?