Pythonを使用してHDFS内のディレクトリ内のファイルを読み込もうとしています。私は以下のコードを使用していますが、エラーが発生しています。Pythonを使用してHDFSディレクトリ内のファイルを読み取る方法
コード:
cat = Popen(["hadoop", "fs", "-cat", "/user/cloudera/CCMD"], stdout=PIPE)
がエラー:
cat: `/user/cloudera/CCMD': Is a directory
Traceback (most recent call last):
File "hrkpat.py", line 6, in <module>
tree = ET.parse(cat.stdout)
File "/usr/lib64/python2.6/xml/etree/ElementTree.py", line 862, in parse
tree.parse(source, parser)
File "/usr/lib64/python2.6/xml/etree/ElementTree.py", line 587, in parse
self._root = parser.close()
File "/usr/lib64/python2.6/xml/etree/ElementTree.py", line 1254, in close
self._parser.Parse("", 1) # end of data
xml.parsers.expat.ExpatError: no element found: line 1, column 0
更新:
私は私私のHDFSディレクトリに10-15 xmlファイルを持っています欲しいパースする。私は1つだけのXMLがディレクトリに存在するときにxmlを解析することができますが、すぐに私はxmlを解析することができない複数のファイル数を持っている。このユースケースでは、私は私のディレクトリから1つのファイルを解析することができるようにpythonコードを書きたいと思います。
ファイル名は違うかもしれませんが、ファイルが保存されるディレクトリは同じです。パスにfilenameの代わりにディレクトリ名を指定します。 – animal
私のディレクトリには、1つのファイルではなく複数のファイルが読み込まれます。 – animal
その後、 'hadoop fs -cat'はあなたのコマンドではありません。 hdfsディレクトリにあるファイルのリストを取得し、取得したファイル名を使用してそれらのファイルを読み込みます。なぜ買う?なぜあなたはhdfsからファイルを読み込もうとしていますか?読み込んだデータを次の段階で処理する場合は、MapReduceを書き込みます。 – franklinsijo