【问题标题】:Error while read or write Parquet format data读取或写入 Parquet 格式数据时出错
【发布时间】:2020-12-14 04:45:53
【问题描述】:

我创建了一个指向带有镶木地板存储的 Azure ADLS 的外部表,并且在将数据插入该表时出现以下错误。我正在使用 Databricks 执行

org.apache.spark.sql.AnalysisException: Multiple sources found for parquet (org.apache.spark.sql.execution.datasources.v2.parquet.ParquetDataSourceV2, org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormat), please specify the fully qualified class name.;

昨天一切正常,我从今天开始收到此错误。

我在互联网上找不到任何关于为什么会发生这种情况的答案。

【问题讨论】:

  • 您是否在 Databricks 上的集群中部署了任何外部库?
  • 没有专门针对 parquet 文件的库,我有一个用于 cosmos spark 连接器的库。
  • 我怀疑它可能包含spark-sql 库的副本,该库具有镶木地板阅读器。您的问题可能是由部署的较新版本的 DB Runtime 引起的。请在帖子中添加有关使用什么运行时以及什么版本的 cosmos db 库的信息
  • 谢谢,这个问题已经解决。错误的原因是,我们使用 uber jar 安装了 Azure 提供的 spark sqldb 连接器,该连接器还获得了 wrt parquet 文件格式化程序的依赖项。

标签: apache-spark parquet databricks azure-databricks


【解决方案1】:

这个问题已经修复,错误的原因是,我们安装了Azure提供的spark sqldb连接器和uber jar,它也有依赖wrt parquet file formatter。

【讨论】:

    【解决方案2】:

    如果您想要一种解决方法而不清理依赖项。以下是您如何选择一种来源(以“org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormat”为例):

    替换:

    spark.read.parquet("<path_to_parquet_file>")

    spark.read.format("org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormat").load("<path_to_parquet_file>")

    【讨论】:

      【解决方案3】:

      例如,您在 spark/jars/ 目录中可能有超过 1 个 jar 文件 - spark-sql_2.12-2.4.4 和 spark-sql_2.12-3.0.3 可能会导致多类问题。

      【讨论】:

        猜你喜欢
        • 2018-05-13
        • 1970-01-01
        • 1970-01-01
        • 2016-06-29
        • 2012-08-20
        • 1970-01-01
        • 1970-01-01
        • 2018-12-13
        • 2023-03-28
        相关资源
        最近更新 更多