Apache Spark xml从2.11迁移至2.12出现弃用警告 如何直接使用XmlReader
Spark XML 版本迁移适配方案
你遇到的废弃警告是spark-xml从0.13.0版本开始,移除了XmlDataFrameReader类下的xml()方法,要求直接使用XmlReader类实现XML读取逻辑,适配步骤如下:
1. 导入核心类
在代码头部引入XmlReader类:
import com.databricks.spark.xml.XmlReader
2. 改写原有读取逻辑
直接实例化XmlReader对象替代原有spark.read.format("xml")的写法,和你原有功能完全等价的实现代码如下:
val xmlDf: DataFrame = new XmlReader() .withOption("nullValue", "") .xml(spark, df.select("payload").map(x => x.getString(0)))
补充说明
- 原有通过
.option()设置的参数,现在统一使用.withOption()方法传入 - 读取本地/HDFS XML文件的场景也可以用相同逻辑改写,只需把第二个参数替换为文件路径即可,示例:
// 读取XML文件场景示例 val xmlFileDf = new XmlReader() .withOption("rowTag", "item") .withOption("nullValue", "") .xml(spark, "hdfs:///path/to/your/file.xml")
- 请确保项目已引入适配Scala 2.12的spark-xml依赖,参考配置:
Maven依赖:
<dependency> <groupId>com.databricks</groupId> <artifactId>spark-xml_2.12</artifactId> <version>0.16.0</version> </dependency>
SBT依赖:
libraryDependencies += "com.databricks" %% "spark-xml" % "0.16.0"
原系统警告提示:method xml in class XmlDataFrameReader is deprecated (since 0.13.0): Use XmlReader directly
内容的提问来源于stack exchange,提问作者Vikram Pawar
相关产品推荐
相关产品推荐

