1
일련의 XML 문서를 대화 형으로 탐색하고 싶습니다. find, findall 및 xpath 메서드를 사용하여 lxml 및 쿼리를 사용하여 문서를 구문 분석하려고합니다. 그러나 PySpark는 Element 객체의 RDD를 만들려고 시도합니다.lxml.Element 객체의 Spark Python RDD?
from lxml import etree
from lxml.etree import XMLSyntaxError
def get_root(xml):
xml_bytes = bytes(bytearray(xml, encoding = 'utf-8'))
try:
return [etree.XML(xml_bytes)]
except XMLSyntaxError:
return []
docs = [
"<doc><tag name='hoo'>hah</tag><tag name='wah'>zoo</tag></doc>"
, "<doc><tag name='hoo'>yah</tag><tag name='wah'>woo</tag></doc>"
]
roots = [get_root(x)[0] for x in docs]
roots
[<Element doc at 0x3b2280>, <Element doc at 0x3b2140>]
docs_rdd = sc.parallelize(docs)
roots_rdd = docs_rdd.flatMap(lambda d: get_root(d))
roots_rdd.count()
2
roots_rdd.first()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "lxml.etree.pyx", line 1033, in lxml.etree._Element.__repr__ (src/lxml/lxml.etree.c:42268)
File "lxml.etree.pyx", line 881, in lxml.etree._Element.tag.__get__ (src/lxml/lxml.etree.c:40855)
File "apihelpers.pxi", line 15, in lxml.etree._assertValidNode (src/lxml/lxml.etree.c:12875)
AssertionError: invalid Element proxy at 62728864
누군가가 내가 무슨 일이 일어나고 있는지 이해할 수있게 도와 줄 수 있습니까?
python 2.7.x 또는 3.5.x, spark 1.6.x, pip 또는 pip3과 함께 설치되는 lxml.
미리 감사드립니다.