怎么用Apache Spark的spark-xml包读取XML数据

幻夢星雲
发布: 2025-12-21 13:14:02
原创
732人浏览过
用 spark-xml 读取 XML 需先添加对应 Spark/Scala 版本的依赖,再通过 DataFrameReader 的 xml 方法加载,关键指定 rowTag 选项以标识记录节点,支持属性前缀、文本列名等解析控制,但不原生支持命名空间和非规则结构。

怎么用apache spark的spark-xml包读取xml数据

用 Apache Spark 的 spark-xml 包读取 XML 数据,核心是先添加依赖,再调用 DataFrameReaderxml 方法。它不是 Spark 内置格式,必须显式引入第三方包。

添加 spark-xml 依赖

根据你的 Spark 和 Scala 版本选择对应版本的 spark-xml。常见组合:

  • Spark 3.5.x + Scala 2.12 → com.databricks:spark-xml_2.12:0.17.0
  • Spark 3.4.x + Scala 2.12 → com.databricks:spark-xml_2.12:0.16.0
  • Spark 3.3.x + Scala 2.12 → com.databricks:spark-xml_2.12:0.15.0

启动 spark-shell 时用 --packages 参数加载:

spark-shell --packages com.databricks:spark-xml_2.12:0.17.0

或在 PySpark 中用 SparkSession.builder.config("spark.jars.packages", "...") 设置。

基础读取方式(Scala/Python)

XML 文件需有统一根节点和结构化子元素(如每条记录是 <row>...</row>),否则解析可能失败。

Scala 示例:

val df = spark.read.format("xml")
  .option("rowTag", "book")
  .load("books.xml")

Python(PySpark)示例:

Browse AI
Browse AI

AI驱动的网页内容抓取和数据采集工具

Browse AI 105
查看详情 Browse AI
df = spark.read.format("xml") \
  .option("rowTag", "book") \
  .load("books.xml")

关键点rowTag 指定每条记录对应的 XML 标签名(如 <book></book>),不设默认为 row;路径支持本地文件、HDFS、S3 等。

常用解析选项

XML 结构复杂时,靠这些选项控制解析行为:

  • attributePrefix:指定属性前缀(默认 _),比如 <book id="1"></book> → 列名 _id
  • valueTag:指定文本内容列名(默认 value),用于处理 <name>Spark</name> 这类纯文本标签
  • ignoreSurroundingSpaces:是否忽略标签内首尾空格(true 更安全)
  • excludeAttribute:设为 true 可跳过所有属性,只保留子元素
  • inferSchema:是否自动推断字段类型(true 默认开启,但深层嵌套可能不准,可关掉后手动 cast)

处理嵌套与命名空间

带命名空间的 XML(如 <book xmlns:ns="http://example.com"></book>)需先去掉前缀或预处理——spark-xml 原生不支持命名空间解析。

嵌套结构(如 <book><author><name>Alice</name></author></book>)会自动转成嵌套字段:author.name。若想扁平化,可用 df.select("author.name") 或配合 explode 展开数组字段。

如果 XML 没有统一 rowTag(比如顶层是 <library><book>...</book></library>),建议先用 XSLT 或外部工具预处理,或改用 text 格式读入后用正则/UDF 解析——spark-xml 不适合解析非规则混合结构。

基本上就这些。不复杂但容易忽略 rowTag 和依赖版本匹配,跑通第一步后,后续清洗和转换就跟普通 DataFrame 一样操作。

以上就是怎么用Apache Spark的spark-xml包读取XML数据的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号