2016-06-23 17 views

答えて

3

動詞LISTSTATUSを使用できます。ドキュメントがList a Directoryであり、次のコードは、WebHDFS REST APIドキュメントで見つけることができます:

{ 
    "name"  : "FileStatuses", 
    "properties": 
    { 
    "FileStatuses": 
    { 
     "type"  : "object", 
     "properties": 
     { 
     "FileStatus": 
     { 
      "description": "An array of FileStatus", 
      "type"  : "array", 
      "items"  : fileStatusProperties 
     } 
     } 
    } 
    } 
} 

curl -i "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=LISTSTATUS" 

応答がFileStatuses JSONオブジェクトです:curl

、これは次のようになります(itemsフィールド用) fileStatusProperties

このJSONスキーマを有する:

あなたはこのように、 pywebhdfsを使用してPythonでファイル名を処理することができ

import json 
from pprint import pprint 
from pywebhdfs.webhdfs import PyWebHdfsClient 

hdfs = PyWebHdfsClient(host='host',port='50070', user_name='hdfs') # Use your own host/port/user_name config 

data = hdfs.list_dir("dir/dir") # Use your preferred directory, without the leading "/" 

file_statuses = data["FileStatuses"] 
pprint file_statuses # Display the dict 

for item in file_statuses["FileStatus"]: 
    print item["pathSuffix"] # Display the item filename 

代わりのprint各オブジェクトをINGのあなたが必要として、あなたが実際にアイテムを扱うことができます。 file_statusesの結果は単なるPython dictなので、右のキーを使用すれば他のdictのように使うことができます。

+0

これを使用して、ディレクトリ内のファイル名を取得できますか? – DPEZ

+0

*完全にそして完全に*これを行うために使用しようとしている言語に依存します。あなたは元の質問にそれを含めていなかったので、私はそれがあなたにとって重要ではないと思っていました。そして、あなたが動詞を知っていれば、あなたはそれを働かせるでしょう。質問を、使用している言語(C++、Python、Ruby、PHP、Fortranなど)の詳細で更新すると、その質問に答えることができます。できるだけ詳しく記述してください(Python 2.7はPython 3.0とは異なり、Ruby 1.8.7はRuby 2.3.1とは異なります、CはC++とは異なりますなど)。 –

+0

私たちが現時点で使用している言語はPython – DPEZ

関連する問題