从RStudio中的Google云存储访问文件

时间:2018-08-17 14:31:07

标签: r google-cloud-platform rstudio google-cloud-storage rstudio-server

我一直在尝试在Google云存储和RStudio服务器(我在Google云中启动的服务器)之间建立连接,以便我可以访问R中的文件以进行总和分析。 我在网上找到了三种不同的处理方式,但是到目前为止,我对这些方式的了解还不够清楚。

  1. 使用特定于文件的公共URL访问文件[这不是我的选择]
  2. 将Google云存储作为光盘安装在RStudio服务器中,并像服务器中的其他任何文件一样对其进行访问[我见过有人张贴过有关此方法的信息,但找不到任何指南或资料来说明其实现方式]
  3. 使用googleCloudStorageR软件包来完全访问Cloud Storage存储桶。

步骤3看起来很标准。但是当我尝试点击gcs_auth()命令时出现以下错误

  

gar_auto_auth(required_scopes,new_user = new_user,no_auto =   no_auto ,:无法验证-   options(googleAuthR.scopes.selected)需要设置为   包括https://www.googleapis.com/auth/devstorage.full_control或   https://www.googleapis.com/auth/devstorage.read_write或   https://www.googleapis.com/auth/cloud-platform

有关如何使用此连接的指南,请参见 https://github.com/cloudyr/googleCloudStorageR 但是它说它需要一个service-auth.json文件来设置环境变量以及所有其他密钥和秘密密钥,但是并没有真正说明它们的真正含义。

如果有人可以帮助我了解它的实际设置方式,或者为我提供设置环境的不错指南,我将非常感激。

谢谢。

2 个答案:

答案 0 :(得分:1)

您可能需要FUSE适配器-这将使您可以将GCS存储桶安装为服务器上的目录。

  1. 在R服务器上安装gcsfuse。
  2. 创建一个mnt目录。
  3. 运行gcsfuse您的存储桶/ path / to / mnt

请注意,尽管相对于FUSE,RW性能并不理想

完整文档

https://cloud.google.com/storage/docs/gcs-fuse

答案 1 :(得分:1)

使用Google Cloud提供的任何服务之前,您必须先附上卡。
因此,假设您已经创建了帐户,则在创建帐户后转到控制台,如果尚未创建 Project ,则 Create Project ,然后单击边栏上的找到 API和服务>凭据
然后,
1)创建服务帐户密钥,将此文件保存为json,则只能下载一次。
2) OAuth 2.0客户端ID 给出应用的名称,然后选择类型作为Web应用并下载json文件。

现在要进行存储,请转到侧边栏查找存储,然后单击它。
创建Bucket并命名为Bucket。
我已经在存储桶中添加了单个图像,也可以出于代码目的添加图像。

让我们看看如何从存储中下载该映像,以进行其他操作,您可以按照给出的链接进行操作。

首先将环境文件创建为.Renviron,以便它自动捕获json文件并将其保存在工作目录中。

In .Renviron file add those two downloaded json files like this
GCS_AUTH_FILE="serviceaccount.json"  
GAR_CLIENT_WEB_JSON="Oauthclient.json"

#R part
library(googleCloudStorageR)
library(googleAuthR)

gcs_auth()   # for authentication

#set the scope
gar_set_client(scopes = c("https://www.googleapis.com/auth/devstorage.read_write",
                      "https://www.googleapis.com/auth/cloud-platform"))    

gcs_get_bucket("you_bucket_name") #name of the bucket that you have created
gcs_global_bucket("you_bucket_name") #set it as global bucket
gcs_get_global_bucket() #check if your bucket is set as global,you should get your bucket name

objects <- gcs_list_objects()  # data from the bucket as list
names(objects)
gcs_get_object(objects$name[[1]], saveToDisk = "abc.jpeg")   #save the data 



**Note :**if you dont get json file loaded restart the session using .rs.restartR()
 and check the using 
Sys.getenv("GCS_AUTH_FILE")
Sys.getenv("GAR_CLIENT_WEB_JSON")
#it should show the files