我们在插入时从Google bigquery收到以下错误:
**未找到OAuth2凭据,开始授权流程**
== Platform ==
CPython:2.7.5:Windows-2008ServerR2-6.1.7601-SP1
== bq version ==
v2.0.17
== Command line ==
['C:\\LogsReceiverService\\bq-script.py', 'load', '--nosync', '--credential_file=C:\\LogsReceiverService\\.bigquery.v2.token', '--source_format=NEWLINE_DELIMITED_JSON', '--project_id=playscape-proj', '--max_bad_records=99999', 'PROD_DATASET.CLIENT_LOGS_20160424', 'D:\\GameConsoleLogs\\Logs_BigQuery\\GameConsoleClientLog.log.1.gz']
== UTC timestamp ==
2016-04-24 13:32:53
== Error trace ==
File "build\bdist.win32\egg\bq.py", line 783, in RunSafely
return_value = self.RunWithArgs(*args, **kwds)
File "build\bdist.win32\egg\bq.py", line 999, in RunWithArgs
client = Client.Get()
File "build\bdist.win32\egg\bq.py", line 604, in Get
cls.client = Client.Create()
File "build\bdist.win32\egg\bq.py", line 584, in Create
credentials = _GetCredentialsFromFlags()
File "build\bdist.win32\egg\bq.py", line 390, in _GetCredentialsFromFlags
credentials = credentials_getter(storage)
File "build\bdist.win32\egg\bq.py", line 330, in _GetCredentialsFromOAuthFlow
credentials = oauth2client.tools.run(flow, storage)
File "build\bdist.win32\egg\oauth2client\util.py", line 132, in positional_wrapper
return wrapped(*args, **kwargs)
File "build\bdist.win32\egg\oauth2client\old_run.py", line 149, in run
code = raw_input('Enter verification code: ').strip()
========================================
该消息还包含带有令牌密钥的链接,但我们不确定应该如何处理它。
你能帮帮忙吗?感谢答案 0 :(得分:0)
运行bq(或任何gcloud操作)时,客户端需要为运行该操作的用户提供OAuth凭据。通常这些客户在首次使用时会要求提供凭据,但听起来似乎并非在您的情况下发生。 (或者凭证文件可能已损坏?)
要删除凭据文件的bq客户端副本,请运行bq init --delete_credentials
。
要尝试重新进行身份验证,请使用bq init
。请注意,如果您使用gcloud客户端与其他Google服务进行通信,则bq.py
会更喜欢这些凭据,因此您可能需要在删除本地BigQuery凭据后运行gcloud auth login --enable-gdrive-access
。 (--enable-grdive-access
是可选的,但它允许在Google表格上使用新的BigQuery联合查询功能。您可能需要也可能不需要此功能。)
凭据的另一个选项:如果您要在没有人为干预的情况下将这些操作作为脚本运行,则可以使用服务帐户凭据,以便这些操作作为另一个身份而不是您的个人凭据完成。这里有两个选项,具体取决于您要运行脚本的位置:
--service_account
,--service_account_private_key_file
和--service_account_private_key_password
标志将操作作为服务帐户运行,而不是使用你的个人身份。bq
,则可以指定单个标志--user_gce_service_account
,bq客户端将从GCE容器加载凭据。