Как разобрать xml-файл, содержащий xml-данные, в одном из его столбцов?
В одном из наших проектов мы получаем xml файлы, в которых часть столбцов хранит другой xml. При загрузке этих данных в кадр данных внутренний xml преобразуется в StringType (что не предназначено), поэтому невозможно получить доступ к узлам при запросе данных (используя оператор точки).
Я искал ответы в сети, но безуспешно. Нашел одну открытую проблему, точно идентичную моему варианту использования в GitHub. Ссылка здесь.
https://github.com/databricks/spark-xml/issues/140
Мой исходный файл xml выглядит следующим образом.
+------+--------------------+
| id | xml |
+------+--------------------+
| 6723 |<?xml version="1....|
| 6741 |<?xml version="1....|
| 6774 |<?xml version="1....|
| 6735 |<?xml version="1....|
| 6828 |<?xml version="1....|
| 6764 |<?xml version="1....|
| 6732 |<?xml version="1....|
| 6792 |<?xml version="1....|
| 6754 |<?xml version="1....|
| 6833 |<?xml version="1....|
+------+--------------------+
В SQL Server для хранения xml в столбце базы данных существует тип данных XML
, но его нет в Spark SQL.
Кто-нибудь сталкивался с той же проблемой и нашел обходной путь? Если да, пожалуйста, поделитесь. Мы используем Spark Scala.