想法是使用bq工具为R会话提供以csv格式存储在BigQuery系统中的数据。 bq工具的输出显示数据以及不需要的消息,例如作业状态和更新警告消息。是否有任何标记,因此bq工具将仅在csv中返回查询数据,而没有其他任何消息?

> cmdbq <- "bq --format=csv query \"SELECT id, SEC_TO_TIMESTAMP(timestamp) AS time FROM publicdata:samples.wikipedia LIMIT 5\""
> r1 <- shell(cmdbq,intern=TRUE)
> r1
 [1] "\rWaiting on bqjob_r1b11c1f4_00000144c13cea58_1 ... (0s) Current status: DONE   " "id,time"
 [3] "18524,2009-08-03 09:13:51"                                                        "2252318,2008-11-24 00:41:42"
 [5] "3430772,2007-01-11 05:43:19"                                                      "11170233,2007-05-11 12:13:36"
 [7] "1008805,2007-06-19 20:34:13"                                                      ""
 [9] "There are available updates for some Cloud SDK components.  To "                  "install them, please run:"
[11] " $ gcloud components update"                                                      ""
> r2 <- read.csv(text=paste(r1[2:7],collapse="\n"),stringsAsFactors=FALSE)
> r2
        id                time
1    18524 2009-08-03 09:13:51
2  2252318 2008-11-24 00:41:42
3  3430772 2007-01-11 05:43:19
4 11170233 2007-05-11 12:13:36
5  1008805 2007-06-19 20:34:13
>


注意:我知道bigrquery软件包的存在,但是我想使用这种方法,因为这部分代码将在foreach并行化循环中运行,并且简化了每个节点的身份验证步骤。

最佳答案

有关需要更新的消息将打印到stderr。这样做是为了仅捕获stdout,不会干扰抓取输出。

或者,您可以通过运行永久禁用此消息

$ gcloud配置设置--section component_manager disable_update_check true

尽管这样以后您将需要手动检查更新。

10-06 16:19