2017-08-30 20 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"を使用しているため、hdfsのすべてのxmlの内容を書きたいと思う。 txt "]、stdin = PIPE)'しかし、この行を 'add_hrk'の中で宣言しました。その場合、hdfsの内容が上書きされてしまいます。私はadd_hrkの外でこれを宣言すれば、ファイルのようなエラーが出ています。私はこれを手助けしていかなければなりません。 – Ironman

+0

私の質問が好きなら、アップしてください。 – Ironman

関連する問題