我正在尝试运行一个执行hive脚本的简单工作流程。 这个hive脚本只调用join(表格非常大); 一旦hive脚本执行结束,我就希望看到工作流状态从RUNNING变为成功,但这种情况不会发生。
这是工作流日志的内容:
2016-05-31 15:52:34,590 WARN
org.apache.oozie.action.hadoop.HiveActionExecutor:
SERVER[hadoop02] U
SER[scapp]
GROUP[-]
TOKEN[]
APP[wf-sqoop-hive-agreement]
JOB[0000001-160531143657136-oozie-oozi-W]
ACTION[0000001-160531143657136-oozie-oozi-W@hive-query-agreement] Launcher
ERROR, reason: Main class [org.apache.oozie.action.hadoop.HiveMain], exception invoking main(), Output data exceeds its limit [2048] 2016-05-31 15:52:34,591
WARN org.apache.oozie.action.hadoop.HiveActionExecutor:
SERVER[hadoop02]
USER[scapp]
GROUP[-]
TOKEN[]
APP[wf-sqoop-hive-agreement]
JOB[0000001-160531143657136-oozie-oozi-W]
ACTION[0000001-160531143657136-oozie-oozi-W@hive-query-agreement]
Launcher exception: Output data exceeds its limit [2048]
org.apache.oozie.action.hadoop.LauncherException: Output data exceeds its limit [2048]
at org.apache.oozie.action.hadoop.LauncherMapper.getLocalFileContentStr(LauncherMapper.java:415)
at org.apache.oozie.action.hadoop.LauncherMapper.handleActionData(LauncherMapper.java:391)
at org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:275) 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:163)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1671)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
答案 0 :(得分:7)
@BorderStark 我不认为该物业以MB为单位表示其大小。根据oozie-default.xml文件中的以下条目,大小为“字符”,即字节。
<property>
<name>oozie.action.max.output.data</name>
<value>2048</value>
<description>
Max size in characters for output data.
</description>
</property>
答案 1 :(得分:4)
它与下面的属性有关,你可以为它增加值并再试一次吗?
Oozie的-default.xml中
<property>
<name>oozie.action.max.output.data</name>
<value>XXXX</value>
</property>
Ambari: 在Oozie服务配置中添加此功能 - &gt; oozie.action.max.output.data = 4096
为了获得查询结果,尽可能多地增加值。目前结果超过2048B,尝试将该值加倍。
答案 2 :(得分:2)
我认为执行您的HIVE查询会产生巨大的输出,而不会被重定向到某个地方。
我建议您选择查询的输出应该进入HDFS中的某个位置,因为您需要将select查询的输出重定向到某些外部/内部HIVE表。
答案 3 :(得分:2)
我假设您可能在您的配置单元操作或工作流程的任何其他操作中包含<capture-output>
元素。尝试从工作流中删除该元素并再次运行它。
<capture-output>
将保存ssh命令的STDOUT并限制为2KiB [2048字节]
您可以详细了解here