全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

如何用Spark SQL读取XML文件

Spark SQL需借助spark-xml库读取XML:按Spark版本选对应依赖,用format("xml")及rowTag等option解析为DataFrame,注册视图后支持SQL查询,属性需加@前缀,嵌套字段自动转StructType。

Spark SQL本身不原生支持XML文件读取,需要借助第三方库(如Databricks的spark-xml)将XML解析为DataFrame后,才能用SQL操作。

添加spark-xml依赖

这是最关键的一步。不同Spark版本需匹配对应版本的spark-xml库:

  • Spark 3.0+:推荐使用com.databricks:spark-xml_2.12:0.17.0(Scala 2.12)
  • Spark 2.4:可用com.databricks:spark-xml_2.11:0.14.0
  • 提交作业时通过--packages参数自动下载(本地开发或集群提交都适用):
    spark-shell --packages com.databricks:spark-xml_2.12:0.17.0

读取XML并转为DataFrame

使用format("xml")指定数据源类型,并通过option()设置关键参数:

  • rowTag:指定每条记录对应的XML标签名(必填),例如...就设为"book"
  • inferSchema:设为true可自动推断字段类型(适合结构较规整的XML)
  • attributePrefix:用于区分属性与子元素(默认"@",如@id表示id属性)
  • 示例代码:
val df = spark.read
  .format("xml")
  .option("rowTag", "book")
  .option("inferSchema", "true")
  .load("books.xml")

注册临时表并执行SQL查询

将DataFrame注册为临时视图后,即可用标准Spark SQL语法查询:

  • df.createOrReplaceTempView("books")
  • 然后运行:
    spark.sql("SELECT title, @category FROM books WHERE @category = 'fiction'").show()
  • 注意:XML属性在SQL中需加前缀(如@category),文本内容直接用字段名(如title

处理嵌套与命名空间(进阶)

复杂XML常含嵌套结构或命名空间,需额外配置:

  • 嵌套字段会自动转为StructType,可用col("author.firstName")访问
  • 含命名空间时,需先用option("rowTag", "{http://example.com}book")或预处理移除命名空间
  • 若自动推断不准,可手动定义Schema传入.schema(mySchema)提升稳定性


# go  # xml解析  # scala  # sql  # 命名空间  # select  # format  # xml  # spark  # http  # 设为  # 进阶  # 这是  # 推荐使用  # 第三方  # 先用  # 最关键  # 每条  # 必填  # 移除 


相关文章: 建站主机是否等同于虚拟主机?  如何快速辨别茅台真假?关键步骤解析  如何在Windows服务器上快速搭建网站?  如何通过IIS搭建网站并配置访问权限?  图册素材网站设计制作软件,图册的导出方式有几种?  如何在宝塔面板中修改默认建站目录?  如何基于云服务器快速搭建网站及云盘系统?  简单实现Android文件上传  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  如何在宝塔面板中创建新站点?  电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  如何生成腾讯云建站专用兑换码?  javascript中的try catch异常捕获机制用法分析  制作网站怎么制作,*游戏网站怎么搭建?  C++如何编写函数模板?(泛型编程入门)  XML的“混合内容”是什么 怎么用DTD或XSD定义  济南专业网站制作公司,济南信息工程学校怎么样?  如何用wdcp快速搭建高效网站?  如何选择高性价比服务器搭建个人网站?  如何通过万网虚拟主机快速搭建网站?  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何续费美橙建站之星域名及服务?  c# Task.ConfigureAwait(true) 在什么场景下是必须的  建站VPS配置与SEO优化指南:关键词排名提升策略  全景视频制作网站有哪些,全景图怎么做成网页?  建站主机SSH密钥生成步骤及常见问题解答?  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  历史网站制作软件,华为如何找回被删除的网站?  如何通过PHP快速构建高效问答网站功能?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  成都网站制作报价公司,成都工业用气开户费用?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  制作销售网站教学视频,销售网站有哪些?  青岛网站建设如何选择本地服务器?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  孙琪峥织梦建站教程如何优化数据库安全?  如何通过cPanel快速搭建网站?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  宝塔面板如何快速创建新站点?  建站之星logo尺寸如何设置最合适?  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  建站之星IIS配置教程:代码生成技巧与站点搭建指南  css网站制作参考文献有哪些,易聊怎么注册?  实例解析Array和String方法  香港服务器租用每月最低只需15元? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。