0

我在 hive 中有一个表,其中包含两列 id(int) 和 xml_column(string)。xml_column 实际上是一个 xml,但它存储为字符串。

+------+--------------------+
|  id  |      xml_column    |
+------+--------------------+
| 6723 |<?xml version="1....|
| 6741 |<?xml version="1....|
| 6774 |<?xml version="1....|
+------+--------------------+

我的问题是:我想解析这个 xml 并使用 spark (scala) 拆分为模式格式。谁能帮我解决这个问题?尝试过数据砖火花 xml 库,但该库处理 xml 文件。

或者有什么方法可以将此字符串列转换为 json,我有一个可以处理这个的 json 解析器。

4

1 回答 1

0

我正在使用火花版本 2.3

先决条件:

  • 砖屋 udf 罐子
  • 数据砖罐
  • xml 架构

您可以使用以下内容:

    import org.apache.spark.sql._
    import com.databricks.spark.xml._;
    val sqlContext = new org.apache.spark.sql.SQLContext(sc) ;
    sql("""CREATE TEMPORARY FUNCTION numeric_range AS 'brickhouse.udf.collect.NumericRange'""") // to read the array type variables
    var df1 = sqlContext.read.format("com.databricks.spark.xml").option("rowTag","<parent tag>").load("hdfs:<path to xml file>")
    val schema = df1.schema
    var df2 = sqlContext.read.format("com.databricks.spark.xml").option("rowTag","<parent tag>").schema(schema).load("hdfs:<path to schema file>")
    df2.registerTempTable("df3")
于 2018-08-31T11:51:06.393 回答