我正在使用 BigQuery Java API 和以下代码执行查询:
try (FileInputStream input = new FileInputStream(serviceAccountKeyFile)) {
GoogleCredentials credentials = GoogleCredentials.fromStream(input);
BigQuery bigQuery = BigQueryOptions.newBuilder()
.setCredentials(credentials)
.build()
.getService();
QueryRequest request = QueryRequest.of("SELECT * FROM foo.Bar");
QueryResponse response = bigQuery.query(request);
// Handle the response ...
}
Run Code Online (Sandbox Code Playgroud)
请注意,我正在使用一个特定的服务帐户,其密钥文件由serviceAccountKeyFile.
我期待 API 会project_id从密钥文件中获取。但它实际上是project_id从GOOGLE_APPLICATION_CREDENTIALS环境变量引用的默认密钥文件中提取的。
这对我来说似乎是一个错误。有没有办法通过显式设置默认项目来解决该错误?
是的,这听起来根本不对。这听起来像一个错误。我总是GOOGLE_APPLICATION_CREDENTIALS在我们的应用程序中使用 export环境变量。
无论如何,您尝试显式设置项目 ID 以查看它是否有效:
BigQuery bigQuery = BigQueryOptions.newBuilder()
.setCredentials(credentials)
.setProjectId("project-id") //<--try setting it here
.build()
.getService();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1653 次 |
| 最近记录: |