Работа Oozie возвращает ошибку HIVETEZHS2USERACCESS - PullRequest
0 голосов
/ 04 июля 2018

Я недавно преобразовал кластер HDP (2.6.2) в HDInsight 3.6 (ранее 3.5). С этого момента мои сиськи, определенные в старой среде, перестали работать. Что интересно, они работают для действий оболочки, но не работают для действий улья. Нет разницы, запускаю ли я их из Oozie или напрямую из HDFS.

Ниже шага рабочего процесса, который не удается:

<action name="hive_action">
<hive xmlns="uri:oozie:hive-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapreduce.job.queuename</name>
<value>${queueName}</value>
</property>
</configuration>
<script>${CODE_DIR}/hive/sql.hql</script>
<param>WPS_DB=wh</param>
</hive>

Я уверен, что параметры переданы правильно. Я получаю следующую ошибку:

2018-07-04 14:34:49,721  WARN HiveActionExecutor:523 - SERVER[correct_server_name] USER[correct_user] GROUP[-] TOKEN[] APP[categorization] JOB[correct_job_name] ACTION[correct_action@wh] Launcher exception: HIVETEZHS2USERACCESS
java.lang.NoSuchFieldError: HIVETEZHS2USERACCESS at org.apache.hadoop.hive.ql.exec.tez.TezSessionState.setupSessionAcls(TezSessionState.java:233)
at org.apache.hadoop.hive.ql.exec.tez.TezSessionState.open(TezSessionState.java:188)
at org.apache.hadoop.hive.ql.exec.tez.TezSessionState.open(TezSessionState.java:116)
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:557)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:681)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:625)
at org.apache.oozie.action.hadoop.HiveMain.runHive(HiveMain.java:336)
at org.apache.oozie.action.hadoop.HiveMain.run(HiveMain.java:313)
at org.apache.oozie.action.hadoop.LauncherMain.run(LauncherMain.java:58)
at org.apache.oozie.action.hadoop.HiveMain.main(HiveMain.java:69)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:242)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:453)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:170)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1866)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:164)

Насколько я знаю, кажется, что поле, необходимое для работы, не определено ни в одном файле конфигурации hive, tez или hive2. Но в том же типе нет такого свойства, как hive.tez.hs2.user.access для настройки xmls конфигурации hive, tez или hive2. Я попытался добавить следующие строки в сценарий sql.hql:

set hive.execution.engine=tez; 
set hive.tez.hs2.user.access=true;

, а также свойство файла hive-site.xml cond.

<property>
  <name>hive.tez.hs2.user.access</name>
  <value>true</value>
</property>

Конечно, без эффекта. Единственная страница, которую я нашел об этом поле: https://hive.apache.org/javadocs/r2.2.0/api/org/apache/hadoop/hive/conf/HiveConf.ConfVars.html#HIVETEZHS2USERACCESS

но на самом деле не знаю, как я могу использовать эту переменную в файле конфигурации / hql. Цени любую помощь.

...