使用Pyspark从XML到Dataframe

时间:2018-09-12 13:14:44

标签: python xml pyspark databricks

我正在尝试抓取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 |
+-------------+

2 个答案:

答案 0 :(得分:0)

您可以使用Spark-XML包,该包直接从您的XML文件创建一个Spark Dataframe,而没有任何其他麻烦。仅当您在XML文件中嵌套了密钥时,情况才会变得更加复杂。

使用其maven存储库在您的Databricks集群上安装软件包非常简单,他们为其提供了坐标。但是,我不确定该软件包是否仍在更新。

答案 1 :(得分:0)

您可以使用Databricks API使用Apache Spark XML处理,以下是代码示例 相同的代码段,用于在hdfs或本地上的第一个副本xml。

Rollup