无法使用 pyspark 将 Xml 数据读取到数据帧

Posted

技术标签:

【中文标题】无法使用 pyspark 将 Xml 数据读取到数据帧【英文标题】:Not Able to read Xml data using pyspark to a dataframe 【发布时间】:2019-04-08 06:33:26 【问题描述】:

我有一个 xml 文件,我必须通过该文件将数据读入 pyspark。我正在使用 spark-xml api 读取它,但它不起作用。 The link is here for git repository.

我使用了python api,但它没有显示结果并引发异常。

java.lang.ClassNotFoundException: Failed to find data source: com.databricks.spark.xml.
Please find packages at http://spark.apache.org/third-party-projects.html
df = spark.read \
.format('com.databricks.spark.xml') \
.options(rowTag='Receipt') \
.load('***.XML', schema = customSchema)

当我转到它建议的链接时,它没有显示任何 xml。

最后,我想读取 xml 文件,然后将其存储到 pyspark 数据帧中。

【问题讨论】:

试试:df = spark.read.format('xml').options(rowTag='Receipt').load('***.XML', schema = customSchema) 是的,我之前也试过了,但是不行。 【参考方案1】:

问题似乎 spark-xml jar 不可用

1) 尝试通过使用 jar 文件位置设置额外的类路径来创建 Spark 会话

jar_path = "<path_of_jar>/com.databricks_spark-xml_2.10-0.4.1.jar"
spark = SparkSession.builder.appName("Spark - XML read").master("local[*]") \
    .config("spark.jars", jar_path) \
    .config("spark.executor.extraClassPath", jar_path) \
    .config("spark.executor.extraLibrary", jar_path) \
    .config("spark.driver.extraClassPath", jar_path) \
    .getOrCreate()

2) 通过提供 spark xml 包启动 pyspark shell

pyspark --packages com.databricks:spark-xml_2.10:0.4.1

【讨论】:

以上是关于无法使用 pyspark 将 Xml 数据读取到数据帧的主要内容,如果未能解决你的问题,请参考以下文章

通过 pyspark.sql.dataframe 将 XML 数据转换为 pandas 数据帧

无法从 S3 读取 csv 到 AWS 上 EC2 实例上的 pyspark 数据帧

无法使用 PySpark 从 Elasticsearch 读取

PySpark 无法通过 sparkContext/hiveContext 读取 Hive ORC 事务表?我们可以使用 Pyspark 更新/删除配置单元表数据吗?

pyspark 无法停止将空字符串读取为 null (spark 3.0)

Pyspark:无法从 SparkFiles 读取镶木地板文件