2013-09-25 48 views

回答

3

首先,如果你想要的是什麼hadoop fs -text給你,那麼你可以肯定你的本地機器上安裝Hadoop的客戶端,並在它上面運行時,應確保指定的完整路徑:

hadoop fs -text hdfs://remote.namenode.host:9000/my/file 

但是,如果你有一個理由從Java做的,基本的答案是這樣的:

Configuration conf = new Configuration(); 
Path p = new Path("hdfs://remote.namenode.host:9000/foo/bar"); 
FileSystem fs = p.getFileSystem(conf); 
InputStream in = fs.open(p); 

然後,您可以從輸入流中讀取您喜歡的內容:將其複製到stdout或其他任何內容。

請注意,fs -text比原始複製稍微聰明一點。它檢測gzip文件和序列文件並將它們「解碼」爲文本。這非常棘手;你可以看看the source code看看它是如何在內部完成的。

+0

是的,我正在尋找使用fs -text的複雜方面。我正在處理LZO壓縮文件,基本上要避免重新實現整個事情。 – Jieren