[英]Read XML file from HDFS to parse in Pyspark with lxml.etree
我已经使用 lxml.etree 在 Python 中编写了一个解析器,现在我正在尝试在 Hadoop 集群上运行所述解析器。 当我在本地运行 function 时,它按预期工作,但是当我尝试将其应用到集群上的文件时收到以下错误(我在 Pyspark Z2591C98B70119FE624898B3E91Z 中执行以下操作,pythonBE914)
xml_pathname = "hdfs://file_path/date_directory/example_one.xml"
xml_tree = etree.parse(xml_pathname)
OSError: Error reading file '/file_path/date_directory/example_one.xml': failed to load external entity
"/file_path/date_directory/example_one.xml"
当我在终端中运行hdfs dfs -ls /file_path/date_directory/example_one.xml
时,我可以看到该文件。
我希望得到帮助的两个领域 -
#Same as above but with wildcards to parse millions of XML files
xml_pathname = "hdfs://file_path/*/*.xml"
xml_tree = etree.parse(xml_pathname)
已经为此工作了一段时间,非常感谢任何和所有的帮助。 欣赏你们
path_rdd = sc.parallelize(path_sample, numSlices=10000) # use only example path
parse_results_rdd = path_rdd.map(lambda x: Row(file_name=os.path.basename(x), **pp.parse_pubmed_xml(x)))
pubmed_oa_df = parse_results_rdd.toDF()
pubmed_oa_df_sel = pubmed_oa_df[['full_title', 'abstract', 'doi',
'file_name', 'pmc', 'pmid',
'publication_year', 'publisher_id',
'journal', 'subjects']]
pubmed_oa_df_sel.write.parquet(os.path.join(save_dir, 'pubmed_oa_%s.parquet' % date_update_str),
mode='overwrite')
https://github.com/titipata/pubmed_parser/blob/master/scripts/pubmed_oa_spark.py
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.