2017-01-19 15 views
0

HiveServer2; Версия для улья: 1.2Hive - GenericUDTF - runQuery завершается сбоем из-за исключения koreo stackoverflow

Я пытаюсь запустить запрос, который содержит пользовательский класс UDF (который реализует GenericUDTF).

Класс UDF содержит объект дерева, который он использует для своих вычислений.

Когда дерево мало, запрос выполняется правильно. но когда дерево растет, то запрос не удается со следующей ошибкой:

org.apache.hive.service.cli.HiveSQLException: Ошибка при обработке заявления: FAILED: Ошибка при выполнении, код возврата -101 из org.apache .hadoop.hive.ql.exec.mr.MapRedTask. null at org.apache.hive.service.cli.operation.Operation.toSQLException (Operation.java:315) at org.apache.hive.service.cli.operation.SQLOperation.runQuery (SQLOperation.java:155) at org.apache.hive.service.cli.operation.SQLOperation.access $ 100 (SQLOperation.java:70) at org.apache.hive.service.cli.operation.SQLOperation $ 1 $ 1.run (SQLOperation.java:205) at java.security.AccessController.doPrivileged (собственный метод) at javax.security.auth.Subject.doAs (Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs (UserGroupInformation.java:1595) at org.apache.hive.service.cli.operation.SQLOperation $ 1.run (SQLOperation.java:217) у java.util.concurrent.Executors $ RunnableAdapter.call (Executors.ja va: 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 (Thread.java:745) Вызванный: java.lang.StackOverflowError в org.apache.hive.com.esotericsoftware.kryo .util.DefaultClassResolver.writeName (DefaultClassResolver.java:90) в org.apache.hive.com.esotericsoftware.kryo.util.DefaultClassResolver.writeClass (DefaultClassResolver.java:81)

Любая идея, как решить эту проблему? Любые магические свойства в конфигурации улья?

ответ

0

Похоже, что вопрос realted в https://github.com/EsotericSoftware/kryo/issues/103

мой обходной путь, чтобы инициализировать объект дерева в время выполнения (в API процесса()) вместо инициализации времени (в Initialize() API)