HiveServer2; Hive版本:1.2
我试图运行一个包含自定义UDF类(实现GenericUDTF)的查询。
UDF类包含一个用于计算的树对象。
当树很小时,查询会正常运行。 但是当树增长时,查询失败并出现以下错误:
org.apache.hive.service.cli.HiveSQLException:处理语句时出错:FAILED:执行错误,从org.apache.hadoop.hive.ql.exec.mr.MapRedTask返回代码-101。空值 在org.apache.hive.service.cli.operation.Operation.toSQLException(Operation.java:315) 在org.apache.hive.service.cli.operation.SQLOperation.runQuery(SQLOperation.java:155) 在org.apache.hive.service.cli.operation.SQLOperation.access $ 100(SQLOperation.java:70) 在org.apache.hive.service.cli.operation.SQLOperation $ 1 $ 1.run(SQLOperation.java:205) at java.security.AccessController.doPrivileged(Native Method) 在javax.security.auth.Subject.doAs(Subject.java:422) 在org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1595) 在org.apache.hive.service.cli.operation.SQLOperation $ 1.run(SQLOperation.java:217) at java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617) 在java.lang.Thread.run(Thread.java:745) 引起:java.lang.StackOverflowError at org.apache.hive.com.esotericsoftware.kryo.util.DefaultClassResolver.writeName(DevaultClassResolver.java:90) at org.apache.hive.com.esotericsoftware.kryo.util.DefaultClassResolver.writeClass(DefaultClassResolver.java:81)
知道如何解决这个问题吗?配置单元配置中的任何魔术属性?
答案 0 :(得分:0)
https://github.com/EsotericSoftware/kryo/issues/103
似乎已经解决了这个问题我的解决方法是在运行时(在process()API中)而不是init时间(在initialize()API中)初始化树对象