在 PySpark 中读取 XML 个文件

Read XML file in PySpark

我尝试将 XML 读入 PySpark 中的数据框。从 Databricks 的文档中,我想出了如何加载 xml 文件,但返回的数据框是空的。下面发布了我如何读取文件和我尝试解析的文件的示例。

from pyspark import SparkContext, SparkConf
from pyspark.sql import SQLContext
import os
os.environ['PYSPARK_SUBMIT_ARGS'] = '--packages com.databricks:spark-xml_2.10:0.4.1 pyspark-shell'
conf = SparkConf().setAppName('Whosebug')
sc = SparkContext(conf=conf)
sqlc = SQLContext(sc)

sqlc.read \
        .format('com.databricks.spark.xml') \
        .option('rootTag', 'tags') \
        .option('rowTag', 'row') \
        .load('example.xml')

example.xml:

<?xml version="1.0" encoding="utf-8"?>
<tags>
  <row Id="1" TagName="inclination" Count="18" ExcerptPostId="553" WikiPostId="552" />
  <row Id="3" TagName="exoplanet" Count="219" ExcerptPostId="11" WikiPostId="10" />
</tags>

在来自 spark-xml 的 books.xml 行标签中包含将被解析为行字段的子标签。在我的示例中,没有子标签只有属性。 这是没有抛出错误并且结果为空数据框的主要原因。 我认为它应该在下一版本的 spark-xml.

中修复

我使用了 spark-2.1.0 和 spark-xml-0.4.0.