Синтаксический анализ XML с помощью Spark SQL - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть следующий xml, который сжат в формате avro. Как только я распаковываю это. Это фрейм данных строк XML, где каждая строка представляет собой документ XML.

 outDF.show

+--------------------+
|         message    |
+--------------------+
|[<?xml version="1...|
|[<?xml version="1...|
+--------------------+

Мой конечный результат должен быть в следующем формате / столбцы

userid(string) , Type(string), code(string), NestedTag2(xml)

Я могу получить первые 3 очень хорошо, используя Spark SQL, но я не знаю, как получить конкретный элемент из XML и сохранить в формате XML

//Creating the temporary view

 outDF.createTempView("xml")
 val k = spark.sql("select * from xml")
 k: org.apache.spark.sql.DataFrame = [message: string]

//Applying Xpath to get first 3 columns

val x = spark.sql("select 
xpath(message,'Document/Tag1/userid/text()') as UserIds, 
xpath(message,'Document/Tag1/Type/text()') as Types, 
xpath(message,'Document/Tag1/code/text()') as Codes from xml")

<?xml version="1.0" encoding="UTF-8"?>
<Feed>
    <Tag1>
        <userid>1234</userid>
        <Type>0d8301</Type>
        <code>00d000</code>
    </Tag1>
    <Tag2>
        <NestedTag2>
            <XCC Code="EVN">
                <Code1 code="US"></Code1>
                <typeId extension="12" root="123"></typeId>
            </XCC>
        </NestedTag2>
    </Tag2>
</Feed>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...