簡體   English   中英

如何使用python讀取HDFS目錄中的文件

[英]How to read files in HDFS directory using python

我試圖使用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文件。 當目錄中只有一個xml時,我能夠解析xml,但是一旦我有多個文件,我就無法解析xml。 對於這個用例,我想編寫python代碼,以便我可以從我的目錄解析一個文件,一旦我解析它移動到下一個。

你可以使用通配符char *來讀取dir中的所有文件:

hadoop fs -cat /user/cloudera/CCMD/*

或者只是閱讀xml文件:

hadoop fs -cat /user/cloudera/CCMD/*.xml

例外是cat: '/user/cloudera/CCMD': Is a directory

您正在嘗試對目錄執行文件操作。 將文件的路徑傳遞給命令。

subprocess使用此命令,

hadoop fs -cat /user/cloudera/CCMD/filename

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM