我希望从R Studio调用BigQuery,安装在Google Compute Engine上。
我在实例上安装了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.
编辑:
我设法通过RStudio system()命令获取bq功能,通过以用户使用RStudio登录终端来跳过验证,通过浏览器登录验证,然后重新登录到RStudio并调用系统(“bq ls”)等。这足以让我走了:))
但是,如果BQ可以在RStudio本身内进行验证,我仍然会更喜欢它,因为许多用户可能会登录,我需要通过终端验证所有这些用户。从服务帐户文档,以及我可以获得认证令牌的事实,提示更容易。
答案 0 :(得分:3)
目前,您需要从命令行运行'bq init'以在从GCE中的脚本调用bq之前设置您的凭据。但是,bq的下一个版本将包括通过新的--use_gce_service_account标志支持GCE服务帐户。