我正在尝试使用bq cli使用大查询将数据导出到GCS。当前有两个项目,每个项目都有其自己的服务帐户。我已经使用验证了服务帐户通过传递密钥json文件,gcloud auth active-service-account。在运行我的工作时,我使用以下命令显式设置项目和帐户
在JOB1之内
gcloud配置设置帐户account1
gcloud配置设置项目project1
bq提取--destination_format NEWLINE_DELIMITED_JSON table1 gs:// path1
在JOB2之内
gcloud配置设置帐户account2
gcloud配置设置项目project2
bq提取--destination_format NEWLINE_DELIMITED_JSON table2 gs:// path2
[当job1和job2都并行运行时,JOB1失败,错误帐户2无法访问project1,类似地,在某些情况下,JOB2失败,错误帐户1无法访问project2。我们已经确定发生了这种情况,因为在设置帐户时,它更改了服务器内(而不是会话内)的默认帐户,因此更改了并行运行的其他作业。您能否提供帮助,以帮助我们如何在同一台服务器中使用多个服务帐户并行执行bq命令?
让我先解释该过程,然后再深入解决方案。在BigQuery上执行操作时,大多数情况下是异步操作。 cli让您认为它是同步的,但不是同步的。
cli执行此操作
如果更改凭据,则CLI不能完成Loop Pull,因为它不再被授权在项目上检查此JobId。
现在,您有2个解决方案:
--nosynchronous_mode
参数注意:我非常确定,如果您使用多个用户和SUDO命令,您可以在同步模式下实现所需的功能。但是,我不是linux专家,对此我无能为力。