首页 > 解决方案 > 将 Apache Spark xml 从 2.11 迁移到 2.12 会给出以下警告。如何直接使用 xmlReader

问题描述

代码:

val xmlDf: DataFrame = spark.read
  .format("xml")
  .option("nullValue", "")
  .xml(df.select("payload").map(x => x.getString(0)))

警告:类 XmlDataFrameReader 中的方法 xml 已弃用(自 0.13.0 起):直接使用 XmlReader .xml(df.select("payload").map(x => x.getString(0)))

标签: apache-sparkapache-spark-sqldatabricksazure-databricksapache-spark-xml

解决方案


您是否尝试将 xml 读取到 df 或从列读取 xml 到 df(嵌套 xml)?

请尝试:

spark.read()
  .format("xml")
  .option("rowTag", "book")
  .load("books.xml");

或者:

import com.databricks.spark.xml.functions.from_xml
import com.databricks.spark.xml.schema_of_xml
import spark.implicits._
val df = ... /// DataFrame with XML in column 'payload' 
val payloadSchema = schema_of_xml(df.select("payload").as[String])
val parsed = df.withColumn("parsed", from_xml($"payload", payloadSchema))

https://github.com/databricks/spark-xml (兼容 Spark 2.4.x 和 3.x,兼容 Scala 2.12。)


推荐阅读