![](/img/trans.png)
[英]How to watch a Directory in HDFS for incoming Files using Python? (Python Script is executed by Docker Container; No Cronjob in 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.