首页 > 解决方案 > 在 Spark 中读取数据框中的 XML 列

问题描述

我有以下数据框

+-----------+------+------------------------------------------------------------------
|ID         |xml                  |
+-----------+------+-----------------------------------------------------------------
|1          |<root><line><colX>1</colX></line><line><colX>2</colX></line></root>  |
|2          |<root><line><colX>3</colX></line><line><colX>4</colX></line> </root>
+-----------+------+-----------------------------------------------------------------

如何使用 databricks 中的 sparkXML 将其转换为原始 spark sql 中的以下内容

+-----------+------+------------------------------------------------------------------
|ID         |colx                  |
+-----------+------+-----------------------------------------------------------------
|1          | 1
 1            2 
|2          | 3
 2            3
+-----------+------+-----------------------------------------------------------------

标签: apache-sparkapache-spark-sql

解决方案


您可以使用 xpath 将元素选择到数组中并分解生成的数组:

df2 = df.selectExpr('ID', "explode(xpath(xml, 'root/line/colX/text()')) as colx")

df2.show()
+---+----+
| ID|colx|
+---+----+
|  1|   1|
|  1|   2|
|  2|   3|
|  2|   4|
+---+----+

推荐阅读