我正在尝试抓取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 |
+-------------+
答案 0 :(得分:0)
您可以使用Spark-XML包,该包直接从您的XML文件创建一个Spark Dataframe,而没有任何其他麻烦。仅当您在XML文件中嵌套了密钥时,情况才会变得更加复杂。
使用其maven存储库在您的Databricks集群上安装软件包非常简单,他们为其提供了坐标。但是,我不确定该软件包是否仍在更新。
答案 1 :(得分:0)
您可以使用Databricks API使用Apache Spark XML处理,以下是代码示例 相同的代码段,用于在hdfs或本地上的第一个副本xml。
Rollup