无法使用 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 更新/删除配置单元表数据吗?