2017-08-30 54 views
0

我想解析xml文件的使用pyspark。我的文件存在於HDFS中。我在下面寫了我的代碼,但是當我執行它時,它無法識別位置。請幫助 - 下面是我的代碼Pyspark:沒有這樣的文件或目錄hdfs

代碼:

import xml.etree.ElementTree as ET 
filenme = sc.wholeTextFiles("/user/root/CDs") 
def add_hrk(file): 
    tree = ET.parse(file) 
    doc = tree.getroot() 
filenme.map(lambda(filename, content): filename).foreach(add_hrk) 

錯誤:

IOError: [Errno 2] No such file or directory: u'hdfs://xxxx/user/root/CDs/Parsed_CD.xml' 

我想提一提,我使用wholeTextFiles因爲在功能ET .parse我不得不提及我目前正在嘗試處理的文件的路徑。請建議,因爲我沒有找到任何解決方案。我已經檢查了存在於hdfs中的文件,但它拋出了那個錯誤。

回答

1

ElementTree庫期望文件在本地文件系統上可用。這就是爲什麼你推薦使用而不是fromstring,例如:

import xml.etree.ElementTree as ET 
filenme = sc.wholeTextFiles("/user/root/CDs") 
def add_hrk(content): 
    tree = ET.fromstring(content) 
    doc = tree.getroot() 

filenme.map(lambda(filename, content): content).foreach(add_hrk) 
+0

這幫了我。感謝您的回覆。我希望你能提供幫助,我在同一個代碼中面臨更多問題。我想用'dumpoff1 = Popen([「hadoop」,「fs」,「-put」,「 - 」,「/ user/cloudera/Demo/Demo」)將所有xml的內容寫入hdfs。 txt「],stdin = PIPE)'但我在'add_hrk'裏面聲明瞭這一行,這種情況下我的內容在hdfs中被覆蓋。如果我在add_hrk外面聲明,我得到的錯誤就像文件不是opend。我不知道如何實現這個請幫助。 – Ironman

+0

如果你喜歡我的問題,請upvote。 – Ironman

相關問題