今天在使用hue编写streaming程序的时候,上传文件一直出现报错,报错信息如下:
Caused by: java.io.IOException: Cannot run program "/u01/yarn/nm/usercache/xuemingpang/appcache/application_1443862109059_23987/container_1443862109059_23987_01_000002/./thirdParty_map.py": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
at org.apache.hadoop.streaming.PipeMapRed.configure(PipeMapRed.java:209)
... 23 more
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:186)
at java.lang.ProcessImpl.start(ProcessImpl.java:130)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1028)
... 24 more
从报错信息上看,是因为没有找到上传的脚本文件,可是仔细查看了自己创建的任务:
文件路径明明是有的:
后来在网上找了很多资料,也到apache官网查看了官方文档。然而并没有得到什么帮助。
最后只好*到google上找,总算在老外的一个网站上找到了解决办法。
大概意思是在window平台下编写的脚本上传到Linux上无法执行,必须转成linux/unix下可执行的格式在行。
解决办法:
只须将你编写的脚本改成unix格式的即可,以notepad++为例:
(1)用notepad++打开你的脚本,然后 编辑-》档案格式转换-》转换成UNIX格式。
(2)然后删掉原先的脚本再上传。
(3)重新执行streaming。
运行成功!
至于为什么格式不对会报no such file or directory呢? 估计是hue的报错系统有问题吧!