3

我希望从安装在 Google Compute Engine 上的 R Studio 调用 BigQuery。

我在实例上安装了 bq python 工具,我希望使用它的服务帐户和 system() 来让 R 调用 bq 命令行工具并获取数据。

但是,我遇到了身份验证问题,它要求提供浏览器密钥。我很确定由于服务帐户而无需获取密钥,但我不知道如何使用 R 构建身份验证(它在 RStudio 上运行,因此会有多个用户)

我可以获得这样的身份验证令牌:

library(RCurl)
library(RJSONIO)
metadata <-  getURL('http://metadata/computeMetadata/v1beta1/instance/service-accounts/default/token')
tokendata <- fromJSON(metadata)

tokendata$$access_token

但是我如何使用它来生成 .bigqueryrc 令牌?缺少此触发身份验证尝试。

这工作正常:

system('/usr/local/bin/bq')

向我展示 bq 已安装好。

但是当我尝试类似的事情时:

   system('/usr/local/bin/bq ls')

我明白了:

Welcome to BigQuery! This script will walk you through the process of initializing your .bigqueryrc configuration file.

First, we need to set up your credentials if they do not already exist.


******************************************************************
** No OAuth2 credentials found, beginning authorization process **
******************************************************************

Go to the following link in your browser:

https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fbigquery&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&client_id=XXXXXXXX.apps.googleusercontent.com&access_type=offline

Enter verification code: You have encountered a bug in the BigQuery CLI. Google engineers monitor and answer questions on Stack Overflow, with the tag google-bigquery:     http://stackoverflow.com/questions/ask?tags=google-bigquery

etc.

编辑:

我已经设法让 bq 从 RStudio system() 命令运行,通过以使用 RStudio 的用户身份登录到终端跳过身份验证,通过浏览器登录在终端进行身份验证,然后登录回 RStudio 并调用 system("bq ls") 等等..所以这足以让我继续前进:)

但是,如果 BQ 可以在 RStudio 本身内进行身份验证,我仍然更喜欢它,因为许多用户可能会登录,我需要通过终端对所有用户进行身份验证。从服务帐户文档中,以及我可以获得身份验证令牌的事实,暗示这更容易。

4

1 回答 1

3

目前,在从 GCE 中的脚本调用 bq 之前,您需要从命令行运行“bq init”来设置您的凭据。但是,bq 的下一个版本将通过新的 --use_gce_service_account 标志包括对 GCE 服务帐户的支持。

于 2013-05-24T06:34:04.617 回答