2014-08-27 78 views
0

我運行此的hadoop streaming命令JAR檔案:Hadoop的流不能訪問

/home/hduser/hadoop/bin/hadoop jar 
/home/hduser/hadoop/share/hadoop/tools/lib 
/hadoop-*streaming*.jar 
-file audio.py 
-cacheArchive  hdfs://localhost:54310/user/hduser 
    /input/audio/cacheaudiodir.jar#cacheaudiodir 
-input /user/hduser/input/audio -output /user/hduser/output 
-mapper audio.py -cmdenv AUDIO_DIR=cacheaudiodir 

,當我嘗試引用 'cacheaudiodir' 在我的Python映射器我得到的錯誤:No such file or directory,如:

dir_a='cacheaudiodir' 
filelist_a = commands.getoutput('/home/hduser/hadoop/bin/hadoop fs -ls ' + dir_a) 

如何指向此符號鏈接文件夾中的文件?

+0

os.path.realpath(dir_a)具有值/tmp/nm-local-dir/usercache/hduser/filecache/2424241732660840311/cacheaudiodir.jar,因此符號鏈接似乎指向了jar文件而不是解壓縮文件。 – schoon 2014-08-27 19:47:48

+0

我試過一個tar.gz而不是.jar而無濟於事。 ls -alh給出: lrwxrwxrwx 1 hduser hadoop 84 Aug 28 11:12 cacheaudiodir - > /tmp/nm-local-dir/usercache/hduser/filecache/545566332614620494/cacheaudiodir.tar.gz – schoon 2014-08-28 10:30:50

回答

0

似乎cachearchive在本地解壓,而不是在hdfs中,所以'hadoop fs -ls'找不到'ls'。