【发布时间】:2016-03-29 20:26:13
【问题描述】:
我正在尝试为 Hadoop Hive 编写一个解析用户代理的 UDF。以下代码在我的本地机器上运行良好,但在 Hadoop 上我得到了:
org.apache.hadoop.hive.ql.metadata.HiveException:无法执行方法 public java.lang.String MyUDF .evaluate(java.lang.String) 抛出 org.apache.hadoop.hive.ql.metadata。类 MyUDF 的对象 MyUDF@64ca8bfb 上的 HiveException,参数 {All Occupations:java.lang.String} 大小为 1',
代码:
import java.io.IOException;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.hive.ql.metadata.HiveException;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.*;
import com.decibel.uasparser.OnlineUpdater;
import com.decibel.uasparser.UASparser;
import com.decibel.uasparser.UserAgentInfo;
public class MyUDF extends UDF {
public String evaluate(String i) {
UASparser parser = null;
parser = new UASparser();
String key = "";
OnlineUpdater update = new OnlineUpdater(parser, key);
UserAgentInfo info = null;
info = parser.parse(i);
return info.getDeviceType();
}
}
我应该提到的事实:
我正在使用 Eclipse 进行“导出可运行 jar 文件”的编译,并将所需的库提取到生成的 jar 选项中
我正在上传这个带有 Hue 的“fat jar”文件
-
我设法运行的最小工作示例:
public String evaluate(String i) { return "hello" + i.toString()"; } 我猜问题出在我正在使用的那个库(从 https://udger.com 下载)周围的某个地方,但我不知道在哪里。
有什么建议吗?
谢谢,米哈尔
【问题讨论】:
-
您是否查看了
application_xxxx_xxxx的 YARN 日志(由 Hive 报告)以检查一些线索,例如使用比 Hive 使用的 JRE 更新的 Java 版本编译的 JAR 的一些内部异常(只是一个示例)?
标签: java hadoop hive user-agent udf