2014-11-03 21 views
0

我有一些代碼訪問hdfs中的文件,在啓動作業之前從main()調用的函數中。Hadoop作業無法看到該文件,該hadoop fs -cat打印就好

這是一個mac上的單節點羣集(僞分佈式模式)。

我不知道如果這是一個問題,由於我在調用之前我發動工作,但我收到以下錯誤:

java.io.FileNotFoundException: hdfs:/localhost/usr/local/tmp/hadoop/hadoop-${user}/data/input/file.csv (No such file or directory) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(FileInputStream.java:146) 
    at org.apache.mahout.common.iterator.FileLineIterator.getFileInputStream(FileLineIterator.java:116) 
    at org.apache.mahout.common.iterator.FileLineIterable.<init>(FileLineIterable.java:53) 
    at org.apache.mahout.common.iterator.FileLineIterable.<init>(FileLineIterable.java:48) 
    at profile2sparse.MRDriver.createDictionaryChunks(MRDriver.java:98) 
    at profile2sparse.MRDriver.main(MRDriver.java:177) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.hadoop.util.RunJar.main(RunJar.java:156) 

我可以看到這個文件使用Hadoop的內容fs -cat

感謝和問候, Atul。

+0

請忽略hdfs:/ localhost/usr/...部分,如果我給hdfs:// localhost:8020/...或/ usr/local/tmp/...,它會得到相同的結果。 – 2014-11-03 18:33:14

回答

0

你能用下面的命令捕捉文件嗎?
FS的Hadoop HDFS -cat:/本地主機的/ usr /本地的/ tmp/Hadoop的/ Hadoop的 - $ {USER} /data/input/file.csv

如果是,它看起來像$ {}用戶不解決在你的程序中。確保大寫$ {user}像$ {USER}。