【问题标题】:Pyspark write fails on overwrite mode in bigquery databasePyspark 写入在 bigquery 数据库中的覆盖模式下失败
【发布时间】:2022-10-05 06:10:58
【问题描述】:

引起:java.lang.IllegalArgumentException:com.google.cloud.bigquery.connector.common.BigQueryConnectorException$InvalidSchemaException:目标表的架构与数据框的架构不兼容

df.write \
.format('bigquery') \
.option('table', (project + '.db.tbl')) \
.mode("overwrite") \
.save()

【问题讨论】:

  • 我认为这个错误是不言自明的。数据框的架构与您尝试写入的表的架构不匹配。可能是数值数据类型(整数与小数等)之间不匹配,也可能是 StringType 列违反了登陆表中目标列的字符限制
  • 感谢您的观察,它完全不同,我已删除表架构并重新执行。 I脚本执行没有任何错误,并且表创建成功。如果我们在没有任何修改的情况下使用相同的脚本执行第二次,那么我们将面临这个问题

标签: pyspark


【解决方案1】:

由于某种原因,架构验证检查在 2022 年 6 月 1 日变得更加严格。我怀疑 dataproc 映像有更新。我们使用的是 2.0.29-debian10。

【讨论】:

    【解决方案2】:

    这是由于最新版本的 BQ 火花连接器(0.25.0):https://github.com/GoogleCloudDataproc/spark-bigquery-connector/releases

    将您的版本修复为以前的版本(0.24.2),您将不会遇到此问题。

    【讨论】:

      【解决方案3】:

      自 2022 年 7 月 1 日以来,我遇到了同样的情况,看来您不应该使用 google documentation 中推荐的最新版本:

      为了非生产使用,也可以指向最新的jars,如下: Dataproc 映像版本 1.5 及更高版本:--jars=gs://spark-lib/bigquery/spark->bigquery-latest_2.12.jar

      我正在使用最新版本,一旦我将 spark-biquery 版本更改为:gs://spark-lib/bigquery/spark-bigquery-with-dependencies_2.12-0.23.2.jar -> 它只是工作美好的。

      编辑:有关升级(模式平等)的更多信息,请参阅here

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题,当我升级到更新版本时,问题就消失了。

        失败的版本: gs://spark-lib/bigquery/spark-bigquery-with-dependencies_2.12-0.25.0.jar

        工作版本: gs://spark-lib/bigquery/spark-bigquery-with-dependencies_2.12-0.27.0.jar

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-10-26
          • 2021-12-24
          • 2019-06-02
          • 1970-01-01
          • 1970-01-01
          • 2022-01-13
          • 2016-03-23
          相关资源
          最近更新 更多