BigQuery 中的 Heisenberg 错误“invalid_grant”?

Posted

技术标签:

【中文标题】BigQuery 中的 Heisenberg 错误“invalid_grant”?【英文标题】:Heisenberg bug `invalid_grant` in BigQuery? 【发布时间】:2018-09-27 11:27:51 【问题描述】:

我使用多台计算机、笔记本电脑和服务器,用于在同一个帐户上运行 BigQuery。现在使用一台计算机,我收到了使用 Python pandas pd.read_gbq 运行 bigquery 脚本的错误,这样

import pandas as pd
pd.read_gbq(query='''select  1''', project_id=7777777, dialect='legacy')

invalid_grant: Bad Request', '\n  "error" : "invalid_grant",\n  "error_description" : "Bad Request

我用了几个星期,但没有其他人,因此称之为 Heisenberg 错误,不确定是否是由于我使用了许多计算机的问题造成的。

如何解决 BigQuery invalid_grant 错误? client_secrets.json的python版本是否错误(我在本地找不到)?

【问题讨论】:

您使用的是服务帐号吗?即您如何进行身份验证.. @GrahamPolley 我怎样才能找到它?我做了gcloud auth login,在 Anaconda 中还可以,但仍然出现错误。我添加了一个小示例,其中出现了 pandas 的错误,我尝试多次卸载 pandas 但没有帮助解决错误,pandas read_gbq 在哪里加载凭据? 【参考方案1】:

身份验证有多种方式,我在评论中提供了服务帐户的解决方案。

服务帐号

您可以创建服务帐户here,说明here。然后,将 read_gbq 与 private_key 参数一起使用,这样

import pandas as pd
from google.cloud import bigquery
client = bigquery.Client.from_service_account_json('BQ.json')
a=pd.read_gbq(query='select 1', project_id='', dialect='standard', private_key='BQ.json')
print(a)

在没有from google.cloud import bigquery 的情况下它最初无法工作,但在第一次成功连接后,它也开始在没有客户端的情况下工作。

【讨论】:

以上是关于BigQuery 中的 Heisenberg 错误“invalid_grant”?的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery 中的奇怪错误

提取操作中的 BigQuery 错误:错误处理作业意外。请再试一次

使用 Java 从 BigQuery 到 BigQuery 表的表复制中的 JSON 解析错误

忽略 BigQuery 中的错误 CSV 记录

查询操作中的 BigQuery 错误:找不到项目 ID

我在 BigQuery 中的 JOIN 错误