我试图执行一个由同事编写的oozie工作流程。我执行这个命令:
oozie job -config ./job.properties -run
我在job.properties中设置了参数,包括我的user.name
,当我检查日志时,我可以看到工作流中使用的那些值 - 在我的hdfs目录中创建文件(例如{{1} })。但是在工作流程中的某个时刻,它会因权限错误而失败,因为它会尝试修改同事目录中的某些内容。它的行为好像exportDir=/user/${user.name}/ra_export
被缓存在某处,并且正在使用旧值。有没有人见过这样的行为,如果有的话,解决方案是什么?
更新
这是日志的失败部分:
${user.name}
但我可以从同一个日志的顶部看到job.properties变量替换正在成功发生:
1215755 [main] INFO org.apache.hadoop.hive.ql.exec.FileSinkOperator - Moving tmp dir: hdfs://hadoop-name-01.mycompany.com:8020/tmp/hive-staging_hive_2015-08-06_19-51-57_511_3052536268795125086-1/_tmp.-ext-10000 to: hdfs://hadoop-name-01.mycompany.com:8020/tmp/hive-staging_hive_2015-08-06_19-51-57_511_3052536268795125086-1/-ext-10000
1215761 [main] INFO org.apache.hadoop.hive.ql.log.PerfLogger - <PERFLOG method=task.MOVE.Stage-0 from=org.apache.hadoop.hive.ql.Driver>
1215762 [main] INFO org.apache.hadoop.hive.ql.exec.Task - Loading data to table client_reporting.campaign_web_events_export from hdfs://hadoop-name-01.mycompany.com:8020/tmp/hive-staging_hive_2015-08-06_19-51-57_511_3052536268795125086-1/-ext-10000
1215821 [main] ERROR org.apache.hadoop.hive.ql.exec.Task - Failed with exception Permission denied: user=clark.bremer, access=WRITE, inode="/user/john.smith/ra_export":john.smith:john.smith:drwxr-xr-x
但正如您在日志的失败部分中所看到的那样,它使用了错误的用户名( Starting the execution of prepare actions
Deletion of path hdfs://hadoop-name-01.mycompany.com:8020/user/clark.bremer/foo_export succeeded.
Creating directory at /user/clark.bremer/foo_export succeeded.
Completed the execution of prepare actions successfully
而不是john.smith
),以及错误的导出目录({{1而不是clark.bremer
)。 John上次运行此工作流时使用了ra_export
。
这是我的job.properties文件的一部分:
foo_export
以下是创建表格的查询中的一些片段:
ra_export
user.name=clark.bremer
jobTracker=hadoop-name-01.mycompany.com:8032
nameNode=hdfs://hadoop-name-01.mycompany.com:8020
exportDir=/user/${user.name}/foo_export
位于我的用户目录中。
答案 0 :(得分:1)
您尝试访问的Hive表,是否已检查,哪个用户已创建Hive表。
你可以放弃现有的Hive Table并与你的用户一起创建一个新表,并运行相同的工作并检查状态