У меня есть следующий 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>