使用 Pyspark 将 XML 转换为数据框

我正在尝试废弃一个 XML 文件并从 XML 文件上的标签创建一个数据框。我使用 pyspark 处理 Databricks。


XML文件:


<?xml version="1.0" encoding="UTF-8"?>

<note>

  <shorttitle>shorttitle_1</shorttitle>

  <shorttitle>shorttitle_2</shorttitle>

  <shorttitle>shorttitle_3</shorttitle>

  <shorttitle>shorttitle_4</shorttitle>

</note>

我的代码似乎从页面中删除了 XML 并从标签创建了一个列表,但是当我创建我的数据框并尝试输入所述列表时,我只看到一个包含空值的数据框。


代码:


from pyspark.sql.types import *

from pyspark.sql.functions import *

import requests

from bs4 import BeautifulSoup



res = requests.get("http://files.fakeaddress.com/files01.xml")

soup = BeautifulSoup(res.content,'html.parser')

short_title = soup.find_all('shorttitle')[0:2]


field = [StructField("Short_Title",StringType(), True)]


schema = StructType(field)


df = spark.createDataFrame(short_title, schema)

输出:


+-----------+

|Short_Title|

+-----------+

|       null|

|       null|

+-----------+

想要的输出:


+-------------+

|Short_Title  |

+-------------+

|shorttitle_1 |

|shorttitle_2 |

+-------------+


湖上湖
浏览 232回答 2
2回答

一只名叫tom的猫

您可以使用Spark-XML包,它直接从您的 XML 文件创建一个 Spark 数据帧,而无需任何进一步的麻烦。当您在 XML 文件中嵌套键时,它只会变得更加复杂。使用他们的 maven 存储库在 Databricks 集群上安装包相当简单,他们提供了坐标。但是,我不确定该软件包是否仍在更新。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python