我想使用 package.json 中的iterparse
函数处理分布在 HDFS 文件系统中的巨大 xml 文件lxml.etree
。
我已经在本地和亚马逊的 EMR 集群上尝试过:
- 本地:我的 xml 文件的地址是
hdfs://localhost:9000/user/hadoop/history.xml
- EMR 集群:地址是
/user/hadoop/history.xml
在这两种情况下,运行我的简单 python 程序都会崩溃并出现以下错误
Traceback (most recent call last):
File "xml_parser.py", line 18, in <module>
main()
File "xml_parser.py", line 12, in main
for event, elem in ET.iterparse(inputFile, tag='page'):
File "src/lxml/iterparse.pxi", line 78, in lxml.etree.iterparse.__init__
FileNotFoundError: [Errno 2] No such file or directory: <file_path>
这是我的python程序
import sys
import lxml.etree as ET
from pyspark import SparkContext
from pyspark.sql import SparkSession
def main():
sc = SparkContext()
spark = SparkSession(sc)
inputFile = sys.argv[1]
for event, elem in ET.iterparse(inputFile, tag='page'):
elem.clear()
print('finished')
if __name__ == "__main__":
main()