我是新来的,所以我完全有可能错过一些基本的东西。
我试着运行一个oozie工作流,从一个协调员那里启动。协调器等待文件出现在目录中。工作流包含一个配置单元操作,该操作运行以下脚本:
CREATE external TABLE IF NOT EXISTS daily_dump (
id bigint,
creationdate timestamp,
datelastupdated timestamp,
data1 string,
data2 string) LOCATION '/data/daily_dump';
FROM daily_dump d
INSERT OVERWRITE TABLE mydata_orc
PARTITION(id, datelastupdated)
SELECT d.id, d.creationdate, d.datelastupdated, d.data1, d.data2;
DROP TABLE daily_dump;
如果我从hivecli手动运行脚本,它就可以正常工作。
当\u成功文件出现时,工作流已正确启动。脚本似乎执行了一半,从hivecli中可以看出,表“daily\u dump”已经创建。我能看到里面的数据。我检查了hivemetastore.log,没有发现任何错误。
但那之后的声明似乎死在了oozie,错误如下:
2015-01-30 18:04:40,086 WARN HiveActionExecutor:542 - USER[me] GROUP[-]
TOKEN[] APP[guzzler] JOB[0000162-150114210350250-oozie-oozi-W]
ACTION[0000162-150114210350250-oozie-oozi-W@copy_to_mydata] Launcher
ERROR, reason: Main class [org.apache.oozie.action.hadoop.HiveMain], exit
code [40000]
错误40000是什么意思?
my hive.log显示脚本中的最后一个命令(drop表),之后没有错误记录:
2015-01-30 15:25:05,001 INFO ql.Driver (Driver.java:execute(1197)) - Starting command:
DROP TABLE daily_dump
2015-01-30 15:25:05,001 INFO hooks.ATSHook (ATSHook.java:<init>(85)) - Created ATS Hook
2015-01-30 15:25:05,001 INFO log.PerfLogger (PerfLogger.java:PerfLogBegin(108)) - <PERFLOG method=PreHook.org.apache.hadoop.hive.ql.hooks.ATSHook from=org.apache.hadoop.hive.ql.Driver>
2015-01-30 15:25:05,001 INFO log.PerfLogger (PerfLogger.java:PerfLogEnd(135)) - </PERFLOG method=PreHook.org.apache.hadoop.hive.ql.hooks.ATSHook start=1422631505001 end=1422631505001 duration=0 from=org.apache.hadoop.hive.ql.Driver>
2015-01-30 15:25:05,001 INFO log.PerfLogger (PerfLogger.java:PerfLogEnd(135)) - </PERFLOG method=TimeToSubmit start=1422631504958 end=1422631505001 duration=43 from=org.apache.hadoop.hive.ql.Driver>
2015-01-30 15:25:05,001 INFO log.PerfLogger (PerfLogger.java:PerfLogBegin(108)) - <PERFLOG method=runTasks from=org.apache.hadoop.hive.ql.Driver>
2015-01-30 15:25:05,001 INFO log.PerfLogger (PerfLogger.java:PerfLogBegin(108)) - <PERFLOG method=task.DDL.Stage-0 from=org.apache.hadoop.hive.ql.Driver>
2015-01-30 15:25:05,095 INFO log.PerfLogger (PerfLogger.java:PerfLogEnd(135)) - </PERFLOG method=runTasks start=1422631505001 end=1422631505095 duration=94 from=org.apache.hadoop.hive.ql.Driver>
我正在运行oozie-4.0.0,hive-0.13。有人有什么想法吗?
2条答案
按热度按时间sqxo8psd1#
我们解决了这个问题。结果发现,hive很好地运行了我的hive脚本,但是在/tmp/hive-yarn中创建临时文件时遇到了问题。目录的所有者是第一个在此群集中运行其脚本的人。我以我的用户身份运行它,没有在该目录中写入的权限。
我们是通过查看与配置单元操作相关联的实际hadoop作业日志发现的。实际错误未正确传播到配置单元日志和oozie日志:-(
ct2axkht2#
如果在创建或删除表时同时使用数据库名和表名,则可以解决此错误。例如,如果数据库名是hivetempdb,那么使用create语句as-create table hivetempdb.daily_dump(id int);对于drop table,使用语句作为drop table hivetempdb.daily\u dump;