谷歌地球尝试验证时检测到错误_打通谷歌Cloud Storage至bigquery的数据流

在谷歌地球尝试验证时遇到错误,由于bigquery不支持直接上传大文件,需借助GCS。年初谷歌验证规则更新,gar_auth()失效,但bigrquery包可以验证。然而,bigrquery不支持上传大数据集且仅限于bigquery服务。本文介绍了一种通用验证方法:创建服务账号密钥,使用JSON私钥文件完成GCS和bigquery的验证,实现数据流操作。
摘要由CSDN通过智能技术生成

9ed9a2784e88dc56ef6a237fae7c225c.png

背景

由于谷歌的bigquery不支持直接上传大于1G的数据,因此需要通过先上传到GCS(google cloud storage),再从GCS将数据load进bigquery。

年初谷歌的验证规则作了更新,基于googleAuthR的gar_auth()函数已经失效,再也不能通过点一下进行验证了,会报如下错误:

45f427f7f442729a90d27690fed64100.png

9482ed4f2290e66fbaa5c9e0dafe9deb.png

585a7ed93c48777a82b6e663c7f890c6.png

但是hadley大神开发的bigrquery包,却能够通过验证,

600eb260fb77477fdbdf227ee36a6de2.png

b8805b91bfd334c212464ede745d659b.png

20ace31f54fe9969917a3327f736d5ab.png

可能tidyverse API用的是Rstudio的官方邮箱,官方认证,所以能够用来验证。

但是,用bigrquery包有两个局限性:

  1. 不支持直接上传大数据集;
  2. 该验证只能使用bigquery服务。

下面介绍下GCS、bigquery通用的验证方法,

依赖

  1. bigquery、GCS服务已开通;
  2. BigQuery API、Google Cloud Storage JSON API已启用:

3a1c792328c0e2c379463d1da1fac531.png
  1. 服务账号已创建,且为owner权限:

0ff9d083a617c3f5b23af3bc477f775e.png

失败的尝试

  1. 使用gar_set_client()无法通过验证;

c85b6508c6a64829c7f2828c6cd31eba.png
  1. 创建客户端id,并使用该凭据,无法通过验证。

6c327c640d2b882caf0e598a7ad9f0a6.png

成功的尝试

  1. 点击服务账号;

319df001ed821cd32714dfb818e20bf4.png
  1. 创建新密钥;

1c0c8a7e8c9862732ba355e3cf882095.png
  1. 创建json私钥;

82c6f82e619524de5008a08838591b9f.png

创建完后会自动下载新密钥的json文件。

  1. 使用私钥json文件完成GCS、bigquery验证。

8725faffc0732f1fb8fef046969b6ed9.png
  1. 官方例子测试*:

可自行测试文件 -> GCS -> bigquery的数据流,

## Not run: 

 library(googleCloudStorageR)
 library(bigQueryR)
 
 gcs_global_bucket("your-project")
 
 ## custom upload function to ignore quotes and column headers
 f <- function(input, output) {
   write.table(input, sep = ",", col.names = FALSE, row.names = FALSE, 
               quote = FALSE, file = output, qmethod = "double")}
   
 ## upload files to Google Cloud Storage
 gcs_upload(mtcars, name = "mtcars_test1.csv", object_function = f)
 gcs_upload(mtcars, name = "mtcars_test2.csv", object_function = f)
 
 ## create the schema of the files you just uploaded
 user_schema <- schema_fields(mtcars)
 
 ## load files from Google Cloud Storage into BigQuery
 bqr_upload_data(projectId = "your-project", 
                datasetId = "test", 
                tableId = "from_gcs_mtcars", 
                upload_data = c("gs://your-project/mtcars_test1.csv", 
                                "gs://your-project/mtcars_test2.csv"),
                schema = user_schema)
 
 ## for big files, its helpful to create your schema on a small sample
 ## a quick way to do this on the command line is:
 # "head bigfile.csv > head_bigfile.csv"

## upload nested lists as JSON
the_list <- list(list(col1 = "yes", col2 = "no", 
                      col3 = list(nest1 = 1, nest2 = 3), col4 = "oh"),
                 list(col1 = "yes2", 
                      col2 = "n2o", col3 = list(nest1 = 5, nest2 = 7), 
                      col4 = "oh2"), 
                 list(col1 = "yes3", col2 = "no3", 
                      col3 = list(nest1 = 7, nest2 = 55), col4 = "oh3"))
   
bqr_upload_data(datasetId = "test", 
                tableId = "nested_list_json", 
                upload_data = the_list, 
                autodetect = TRUE)


## End(Not run)

对R与数据科学感兴趣的小伙伴欢迎关注同名公众号:R语言工程化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值