我在Hue使用oozie编辑器调用bash shell脚本 .
我在工作流中使用了shell动作,并在shell命令中尝试了以下不同的选项:
-
使用'choose a file'上传shell脚本
-
提供存在shell脚本的本地目录路径
-
给出了存在shell脚本的HDFS路径
但所有这些选项都给出了以下错误:
不能运行程序 “sec_test_oozie.sh”(在目录 “/数据/ hadoop的/纱线/本地/ usercache /用户/应用程序缓存/ application_1399542362142_0086 / container_1399542362142_0086_01_000002”):java.io.IOException的:误差= 2,没有这样的文件或目录
我应该如何给出shell脚本执行命令? shell脚本文件应该驻留在哪里?
7 回答
“没有这样的文件或目录”oozie无法找到该文件 . 请检查命令中的AddPath设置 .
在编辑节点seciton中,获取oozie应用程序hdfs路径 .
在hdfs oozie应用程序路径中上载shell脚本 .
在oozie编辑节点步骤中,Shell命令 - 指定上载的shell脚本名称 .
下面是AddPath的选项,然后添加文件,添加上传到hdfs路径的shell脚本 .
我认为你是从Windows机器创建文件,这是添加额外的换行符 . 你需要将shell脚本文件转换为Unix格式 . 我也遇到了同样的问题 . 然后我从Linux系统创建了文件,它开始工作这个错误是错误的 .
我遇到了同样的问题,问题是该脚本在工作流尝试将其解析为属性行时回显了一些不相关的行 . Oozie给了一个非常 irrelevant error message 的
java.io.IOException: error=2, No such file or directory
,这只会增加混乱 .您需要使用
<file>
添加脚本 .如果你使用
<capture-output/>
那么你必须确保你的脚本只打印"key=value"行,比如java属性,否则你会得到你看到的错误java.io.IOException: error=2, No such file or directory
,某些路径指向.../yarn/local/usercache/...
您需要在oozie shell步骤中添加文件“sec_test_oozie.sh” . 在添加文件
您是否使用Hue文件浏览器编辑sec_test_oozie.sh?根据您的Hue版本,它可能已损坏它:hue-list
我想扩展@SergioRG的答案 . Oozie,至少与Cloudera的Hue界面非常违反直觉 .
要运行脚本文件,应满足三个条件:
该文件位于HDFS文件系统上,位于Oozie可访问的文件夹中
该文件应在shell命令字段中指示
该文件应与任务卡的"Files+"部分中的任何其他相关文件一起添加 .
我想知道为什么他们没有默认添加你正在调用的脚本文件 .
编辑:如果您需要设置路径变量(例如PATH = / usr / local / bin:/ usr / bin),请同时检查高级选项(左上角的齿轮) .
从我的shell脚本中删除#!/ bin / bash帮助了我