当前位置: 首页 > 知识库问答 >
问题:

为什么Dataproc使用这个奇怪的JSON包着色版本?我如何使用它?

谭光辉
2023-03-14

我试图从BigQuery连接器捕获预期的异常。异常的类是:com.google.应用程序编程接口。客户古格里皮斯。json。GoogleJsonResponseException,我以前成功地捕获了云存储连接器引发的异常。

当我在Dataproc(Spark)中运行代码时,抛出的异常与此异常类似,但为着色版本:com.google.云hadoop。重新包装。bigquery。通用域名格式。谷歌。应用程序编程接口。客户古格里皮斯。json。谷歌JSONResponseException

我的代码如下所示:

...
  case e: GoogleJsonResponseException =>
    e.getDetails.getCode match {
      case 404 =>
        ss.emptyDataFrame
      case _ =>
        throw e
    }
  case e: Exception =>
    println(e.getClass) // reaches here
    throw e
...

在我的构建中。sbt(我认为这可能是错误的)我有:

assemblyShadeRules in assembly := Seq(
  ShadeRule
    .rename("com.google.common.**" -> "repackaged.com.google.common.@1")
    .inAll
)

我需要这个重新打包的版本来消除谷歌的一些讨厌的不兼容(羞耻谷歌,羞耻)。

为什么它也在这上面做阴影?我怎样才能让它工作或围绕它工作?

小警告:我在Java方面做得不多,在Scala方面做得更少,所以我对着色/重新打包知之甚少——要温柔

编辑:根据下面的评论,我可能应该说更多关于确切的方法。

我正在读取数据从BQ与SparkContext.newAPIHadoopRDD。堆栈跟踪的顶部如下所示:

at com.google.cloud.hadoop.repackaged.bigquery.com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:150)
    at com.google.cloud.hadoop.repackaged.bigquery.com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
    at com.google.cloud.hadoop.repackaged.bigquery.com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
    at com.google.cloud.hadoop.repackaged.bigquery.com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:401)
    at com.google.cloud.hadoop.repackaged.bigquery.com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1097)
    at com.google.cloud.hadoop.repackaged.bigquery.com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:499)
    at com.google.cloud.hadoop.repackaged.bigquery.com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:432)
    at com.google.cloud.hadoop.repackaged.bigquery.com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:549)
    at com.google.cloud.hadoop.io.bigquery.BigQueryHelper.getTable(BigQueryHelper.java:327)

共有1个答案

陆才俊
2023-03-14

这显然是因为BQ连接器中有一个bug。多亏了大港和Igor Dvorzhak,据称它现在将在即将发布的连接器1.0.0版本中得到修复(见对问题的评论)。

如果您有此问题,请等待新版本发布。或者如果它已经被更新到

希望这能有所帮助。

 类似资料:
  • 我将角色粘贴到一个空对象,并将刚体脚本应用到该空对象(以更改轴)。 使用系统。收藏;系统收藏。通用的联合发动机; 公共类主要特征:单一行为{公共浮动速度; }

  • 问题内容: 我正在使用Python 3.6.1,但遇到了一些非常奇怪的事情。我有一个简单的字典作业错字,花了很长时间才找到。 输出量 代码在做什么?IMO应该什么时候都没有提出。起初,我认为它正在创建一个切片。但是,键入会引发一个。我也输入了控制台,但控制台没有打印任何内容。我以为也许它回来了,但是我不太确定。 我还认为这可能是单行if语句,但这也不应该是正确的语法。 此外,应提出一个。 我很困惑

  • 在我有这个脚本名,它有两个词和。我该如何取一个正确的名字? 有选择: 下部金属外壳- 大写字母- 蛇壳—— 烤肉串盒—— 带有冒号分隔符的大口喝样式- 任何其他分隔符 什么选项是正确的?为什么?

  • 我对Ant非常陌生(我来自Maven),我发现了很多问题来做下面的操作。 我有一个名为CrystalIceGUI主项目,它使用了另一个名为ShellextBridge的依赖项项目。 依赖项目ShellExtBridge有一个自己的build.xml文件,该文件编译项目并将其打包到一个jar文件中,该jar文件被插入名为Release的direcotry中 主项目CrystalIceGUI有它的bu

  • 我对maven和MacOS都是新手。

  • 问题内容: 当使用“特殊” Unicode字符时,当编码为JSON时,它们作为奇怪的垃圾出现: 为什么?我的编码做错了吗? (这是一劳永逸地澄清该主题的参考问题,因为这是一遍又一遍的。) 问题答案: 首先: 这里没有错。 这就是 可以 在JSON中编码字符的 方式 。它是官方 标准。它基于如何在 Javascript ECMAScript(第7.8.4节“字符串文字”)中形成字符串文字的方式,其描