首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Linux (bigrquery)上验证R中的BigQuery

如何在Linux (bigrquery)上验证R中的BigQuery
EN

Stack Overflow用户
提问于 2021-10-15 02:23:50
回答 1查看 372关注 0票数 0

我们试图在一个计划在linux服务器上运行的R脚本中对BigQuery进行身份验证。我们有:

代码语言:javascript
复制
bigrquery::bq_auth(path = '~/path-to/credentials/our-creds.json')

当我在R中本地运行它时,我得到了这个提示

代码语言:javascript
复制
The bigrquery package is requesting access to your Google account.
Select a pre-authorised account or enter '0' to obtain a new token.
Press Esc/Ctrl + C to cancel.

1: myemail@gmail.com

Selection: 

当我们通过Rscript our_script.R在linux服务器上运行这个程序时,我们会得到以下错误:

代码语言:javascript
复制
Error: Can't get Google credentials.
Are you running bigrquery in a non-interactive session? Consider:
  * Call `bq_auth()` directly with all necessary specifics.
Execution halted

当我们通过R在linux服务器上运行这个程序以打开R,然后手动运行代码行时,我们得到:

代码语言:javascript
复制
> bigrquery::bq_auth(path = '~/path-to/credentials/our-creds.json')
Waiting for authentication in browser...
Press Esc/Ctrl + C to abort

而且,由于我们没有一个浏览器来进行身份验证(我们是生活在GCP上的linux服务器的SSH),所以终端挂在这里.

如何在服务器上成功地进行身份验证,以便Rscript out_script.R能够成功运行?

编辑:我们服务器上的信息:

让我知道,如果我可以分享更多的信息,以帮助这一点。此外,我们还尝试将myemail@gmail.com添加到bigrquery的email参数中,但这并没有解决问题。我看到有一个token参数,也许我们可以在某个地方手动添加一个令牌?这一切都非常令人沮丧,因为我认为使用服务帐户键应该解决这个问题,但是我们指向具有bigquery权限的有效服务帐户密钥,但仍然无法在服务器上进行身份验证。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-28 20:46:06

同样的问题在RStudio社区论坛上被问到了。在这里张贴讨论供后人使用。

一些疑难解答的想法: ..。R脚本计划在linux服务器上运行.每当我听到“预定”,我就会想到"cron",当我听到"cron“时,我就会想到”路径问题“。因此,在服务器/计划上下文中,我建议进行非常繁琐的检查,以确保您真正了解什么是工作目录,用户是谁,以及路径是否解析到您想要的内容。 但是,这个服务帐户令牌在本地交互会话中似乎对您不起作用,这表明文件有问题。历史上,人们试图使用其他JSON文件,比如用于OAuth客户端的JSON,就好像它是服务帐户的JSON,而服务帐户由于明显的原因而无法工作。 通过使用如下面所述的“漱口详细”选项,您可以更深入地了解这是如何失败的和如何进入交互式auth的: 漱口水故障排除 - gargle,如果您还没有找到它(并且为了其他读者的利益),下面是关于如何设置非交互式auth的一般概述: Ggle.r-lib.org- 非交互方式 - gargle

正如同一论坛线程中的@Canovice所承认的,这一问题是由于bq_auth()函数中使用的服务帐户密钥错误造成的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69579301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档