2013-09-25 1 views

Répondre

3

Tout d'abord, si tout ce que vous voulez est exactement ce que hadoop fs -text vous donne, alors vous pouvez installer uniquement le client Hadoop sur votre machine locale, et exécutez-là, en étant sûr de spécifier le chemin complet:

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

Mais si vous avez une bonne raison de le faire à partir de java, la réponse de base est quelque chose comme ceci:

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); 

Vous pouvez ensuite lire ce flux d'entrée comme vous le souhaitez: copiez-le sur stdout ou autre.

Notez que le fs -text est un peu plus intelligent que la simple copie brute. Il détecte les fichiers gzipés et les fichiers de séquence et les "décode" en texte. C'est assez difficile. vous pouvez vérifier the source code pour voir comment cela se fait en interne.

+0

Oui, je cherche à utiliser l'aspect sophistiqué de fs -text. Je traite des fichiers compressés LZO et voudrais essentiellement éviter de réimplémenter le tout. – Jieren

Questions connexes