我想读使用Python在HDFS目录中的文件读取HDFS目录中的文件。我使用下面的代码,但我得到错误。如何使用python
代码:
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
更新:
我有10-15 XML文件在我HDFS目录,我想要t o解析。我能够解析XML时只有一个XML出现在目录中,但只要我有文件的多个号码我不能够解析XML。对于这种用例,我想编写Python代码,这样我就可以从我的目录中解析出一个文件,并且一旦我解析它就会移到下一个文件。
文件名可以不同,但文件保存的目录是相同的,这就是为什么我想要在路径中提供目录名称而不是文件名。 – animal
我想要读取的目录中有多个文件,而不是单个文件。 – animal
然后'hadoop fs -cat'不是你的命令。获取hdfs目录中的文件列表并使用检索到的文件名读取它们。买为什么?你为什么试图从hdfs读取文件?对于读取数据的下一阶段处理,如果是,请尝试写入MapReduce。 – franklinsijo