Синтаксический анализ XML с использованием spark - PullRequest
0 голосов
/ 31 мая 2018

У меня есть таблица в улье с двумя столбцами 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, который может это обработать.

1 Ответ

0 голосов
/ 31 августа 2018

Я использую версию spark 2.3

Необходимые условия:

  • Brickhouse udf jar
  • jatabricks jar
  • 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")
...