2016-09-09 14 views
0

のリストを取得します。それをしてもいいですか?言い換えれば私はこれを行うことができます知っているサブディレクトリ

、私が欲しいのはこのようなものです:

subdirectories = magicFunction() 
for subdir in subdirectories: 
    data sc.textFile(subdir) 
    data.count() 

私が試した:それは、ローカルディレクトリで検索しているため、

In [9]: [x[0] for x in os.walk("/hadoop_foo/")] 
Out[9]: [] 

が、私はそれが失敗だと思います(ゲートウェイの場合)、「/ hadoop_foo /」はにあります。 "hdfs:/// hadoop_foo /"と同じです。コード内

hadoop dfs -lsr /hadoop_foo/ 


Correct way of writing two floats into a regular txtから..::実行するための方法があるかどう


How can I list subdirectories recursively for HDFS?を読んだ後、私は疑問に思って

In [28]: os.getcwd() 
Out[28]: '/homes/gsamaras' <-- which is my local directory 

答えて

1

Pythonを使用して012を使用するモジュール; walk()メソッドを使用すると、ファイルのリストを取得できます。

コードは次のようになりsould:スカラ座で

from hdfs import InsecureClient 

client = InsecureClient('http://host:port', user='user') 
for stuff in client.walk(dir, 0, True): 
... 

あなたはファイルシステム(val fs = FileSystem.get(new Configuration()))を取得し、あなたがまたしてあなたのスクリプトからシェルコマンドを実行することができ

https://hadoop.apache.org/docs/r2.4.1/api/org/apache/hadoop/fs/FileSystem.html#listFiles(org.apache.hadoop.fs.Path、boolean)を実行することができますos.subprocessしかし、ここでシェルユーティリティのテキスト出力に依存するので、これは決して推奨される方法ではありません。最終的に、どのようなOPのために働いたことはsubprocess.check_output()を使用していた


:または[タグ:パイソン]:

subdirectories = subprocess.check_output(["hadoop","fs","-ls", "/hadoop_foo/"]) 
+0

は、この[javaのタグ]ですか?私は[tag:python]を使用しています。また、それは実行された後、リンクは明確ではない?私は自分のコードで正確に何をすべきか? 'subprocess.call(["/hadoop_foo/"])'はメインクラス 'dfs'を見つけることができないと言っています。 'dfs'の代わりに' fs'と同じです。私はまた、最初の部分で "hadoop dfs"を試し、 'OSError:[Errno 2]というファイルやディレクトリはありません.' – gsamaras

+0

ファイルを再帰的に取得するPythonの方法を提供する答えを編集しました。 – patrungel

+0

私はそれを見ました、ありがとう。 '' hdfs'というモジュールはありません、私は運命に陥っています。 '_'、しかしオプションを提供するために+1!あなたがここにもっと多くの人々を連れて来るように質問をアップしたいなら、それは助けになるかもしれません! :) – gsamaras

関連する問題