gpt4 book ai didi

java - Bigquery : how to access another project in Bigquery JAVA API?

转载 作者:太空宇宙 更新时间:2023-11-04 06:27:32 25 4
gpt4 key购买 nike

下面是我们用来获取 bigquery 客户端的工作代码示例。我们想要调整它,以便我们可以跨不同项目进行查询。例如,在项目 1 上运行查询,但将结果保存到项目 2 中的表中。我所做的是获得project2的身份验证,但在查询中提供对project1中表的完整路径引用,但它不适用于写入Bigquery时作业失败。 accessDenied:访问被拒绝。(job_id:job_queryToTable_c43f8d51-01a5-492c-b648-e15171bb65db_266866506361660)。我该怎么办?

private void getBigQuery() {
if (mBigquery == null) {
HttpTransport transport = new NetHttpTransport();
List<String> lScope = new ArrayList<String>();
lScope.add(ConfigConstants.SCOPE);
GoogleCredential credential;
try {
credential = new GoogleCredential.Builder()
.setTransport(transport)
.setJsonFactory(ConfigConstants.JSON_FACTORY)
.setServiceAccountId(ConfigConstants.SERVICE_CLIENT_ID)
.setServiceAccountScopes(lScope)
.setServiceAccountPrivateKeyFromP12File(new File(ConfigConstants.KEY_FILE)).build();
mBigquery = new Bigquery.Builder(transport,
ConfigConstants.JSON_FACTORY, credential)
.setApplicationName("BigQuery-Service-Accounts/0.1")
.setHttpRequestInitializer(credential).build();
} catch (GeneralSecurityException e) {
//TODO e.printStackTrace();
} catch (IOException e) {
//TODO e.printStackTrace();
}

}
}

当我尝试从另一个项目的表中获取表信息时出现无效授权

Table table = mBigquery.tables().get(project2,dataset,tableId).execute();//mBigquery is with credential for project1 and get table is for project2

最佳答案

弄清楚了:转到 Google 开发者控制台 --> 项目 1 的权限 --> 添加成员 --> 使用帐户的客户端电子邮件 ID 添加项目 2 的服务帐户。然后就可以了

关于java - Bigquery : how to access another project in Bigquery JAVA API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26593498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com