2014-03-27 42 views
0

的ReadFromHadoopURL文件的內容如下:試圖讀取Hadoop的URL數據,但無法做到so.I我得到錯誤

package com.felix.hadoop.training; 

import java.io.InputStream; 
import java.net.URL; 

import org.apache.hadoop.fs.FsUrlStreamHandlerFactory; 
import org.apache.hadoop.io.IOUtils; 

// URLCat 
public class ReadFromHadoopURL { 

    static { 
     URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory()); 
    } 

    public static void main(String[] args) throws Exception { 
    InputStream in = null; 
    try { 
     in = new URL(args[0]).openStream(); 
     IOUtils.copyBytes(in, System.out, 4096, false); 
    } finally { 
     IOUtils.closeStream(in); 
    } 
     } 
    } 

然後創建了一個jar文件ReadFromHadoopURL.jar。

然後,我跑到這個命令

hadoop jar /home/training/Pradosh/ReadFromHadoopURL.jar ReadFromHadoopURL hdfs://localhost:54310/my/empfile 

我收到此錯誤

Exception in thread "main" java.lang.ClassNotFoundException: ReadFromHadoopURL 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:264) 
    at org.apache.hadoop.util.RunJar.main(RunJar.java:149) 

能否請你幫我調試這個?

回答

0

爲了與hadoop jar命令運行,必須實施包含Map extends Mapper<>類(和任選Reduce extends Reducer<>)一類作爲在規範WordCount Example示出。

上述看起來像你試圖實現一個簡單的Java控制檯應用程序來捕捉存儲在HDFS中的文件。如果是這樣的話,那麼你應該像運行:

java -cp ./ReadFromHadoopURL.jar ReadFromHadoopURL hdfs://localhost:54310/my/empfile

注:獲得所有的Hadoop和Apache依賴於命令行的工作可能會需要更擴大CP /類路徑。

+1

這是不正確的。您不必擁有Mapper即可運行與Hadoop交互的應用程序。另外,'hadoop jar'命令的主要功能之一就是設置HADOOP_CLASSPATH,它具有您需要用於Hadoop應用程序的核心依賴關係。 – climbage

+0

良好的修正。我以前沒有用過'hadoop jar'。我可以讓它運行一個簡單的hello world,但是我得到大量的錯誤,比如'java.lang.Exception:2012-02-03 19:11:02 SampleClass8 [WARN]問題在com.osa.mocklogger上找到id 153454612 .MockLogger $ 2.run(MockLogger.java:83)'運行類似於Pradosh的代碼時。不知道問題是否特定於我的羣集配置,或者他是否也是如此。 – RickH

+0

該警告似乎並沒有與Hadoop相關 – climbage

1

您可能只需要用包名稱來完全限定您的類名。 ReadFromHadoopURL應該是com.felix.hadoop.training.ReadFromHadoopURL

hadoop jar /home/training/Pradosh/ReadFromHadoopURL.jar com.felix.hadoop.training.ReadFromHadoopURL hdfs://localhost:54310/my/empfile 
+0

感謝您的答覆。您就在那裏。我這樣做。但現在當我運行時,我得到這個錯誤.... – Kumar

+0

什麼錯誤?同樣的錯誤? – climbage

+0

當我試圖寫出整個錯誤。它說的超過評論長度。請告訴我如何發佈它? – Kumar

相關問題