1
基本上,我想要的是使用Hadoop Java API從本地調用到遠程Hadoop集羣。我希望Hadoop集羣執行如何運行「hadoop fs -text」。遠程使用Java API?
應該大致相當於「SSH用戶@遠程「Hadoop的FS -text。」
基本上,我想要的是使用Hadoop Java API從本地調用到遠程Hadoop集羣。我希望Hadoop集羣執行如何運行「hadoop fs -text」。遠程使用Java API?
應該大致相當於「SSH用戶@遠程「Hadoop的FS -text。」
首先,如果你想要的是什麼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看看它是如何在內部完成的。
是的,我正在尋找使用fs -text的複雜方面。我正在處理LZO壓縮文件,基本上要避免重新實現整個事情。 – Jieren