在 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.
我尝试将 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.