hive-genericudtf-runquery由于kryo stackoverflow异常而失败

x7rlezfr  于 2021-06-28  发布在  Hive
关注(0)|答案(1)|浏览(294)

hiveserver2;配置单元版本:1.2
我正在尝试运行一个包含自定义udf类(实现genericudtf)的查询。
udf类包含一个用于计算的树对象。
当树很小时,查询运行正常。但当树增长时,查询将失败,并出现以下错误:
org.apache.hive.service.cli.hivesqlexception:处理语句时出错:失败:执行错误,从org.apache.hadoop.hive.ql.exec.mr.mapredtask返回代码-101。org.apache.hive.service.cli.operation.operation.tosqlexception(操作。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) 位于javax.security.auth.subject.doas(subject)的java.security.accesscontroller.doprivileged(本机方法)。java:422)在org.apache.hadoop.security.usergroupinformation.doas(usergroupinformation。java:1595)在org.apache.hive.service.cli.operation.sqloperation$1.run(sqloperation。java:217)在java.util.concurrent.executors$runnableadapter.call(executors。java:511)在java.util.concurrent.futuretask.run(futuretask。java:266)位于java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor。java:1142)在java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor。java:617)在java.lang.thread.run(线程。java:745)原因:java.lang.StackOverflowerError位于org.apache.hive.com.esotericsoftware.kryo.util.defaultclassresolver.writename(defaultclassresolver)。java:90)在org.apache.hive.com.esotericsoftware.kryo.util.defaultclassresolver.writeclass(defaultclassresolver。java:81)
你知道怎么解决这个问题吗?在Hive配置中有什么神奇的属性吗?

stszievb

stszievb1#

看来这件事和https://github.com/esotericsoftware/kryo/issues/103
我的解决方法是在运行时(在process()api中)而不是init time(在initialize()api中)初始化树对象

相关问题