在Databricks中使用PySpark读取XML文件时如何忽略注释
解决PySpark读取XML忽略注释的方案
方法1:使用spark-xml内置参数(推荐)
Databricks spark-xml 从v0.11.0版本开始原生支持忽略XML注释的配置,只需在读取参数中新增ignoreComments选项并设为True,即可自动过滤所有符合规范的XML注释块,包括文件开头的大块注释、节点内嵌注释都可以直接忽略:
df = spark.read \ .format("com.databricks.spark.xml") \ .option("rowTag", "person") \ .option("ignoreComments", True) \ .xml("src/main/resources/persons.xml")
方法2:文本预处理适配旧版本
如果环境中spark-xml版本低于v0.11.0不支持上述参数,可以先将XML文件作为纯文本读取,通过正则移除所有注释块后再解析:
import re # 读取XML文件为纯文本RDD xml_rdd = sc.wholeTextFiles("src/main/resources/persons.xml").map(lambda file_pair: file_pair[1]) # 正则匹配删除所有<!-- -->格式的注释块 clean_xml_rdd = xml_rdd.map(lambda content: re.sub(r'<!--[\s\S]*?-->', '', content)) # 解析处理后的XML内容 df = spark.read \ .format("com.databricks.spark.xml") \ .option("rowTag", "person") \ .xml(clean_xml_rdd)
内容的提问来源于stack exchange,提问作者Naman Sinha
相关产品推荐
相关产品推荐

