java.lang.NoSuchMethodError: com.google.api.services.bigquery.model.JobConfigurationQuery.getConnectionProperties()Ljava/util/List;
java.lang.NoSuchMethodError: com.google.api.services.bigquery.model.JobConfigurationQuery.getConnectionProperties()Ljava/util/List;
我在使用 com.google.api.services 时遇到一些问题。我正在使用此版本“BigQuery API v2(修订版 459)”:
确实“getConnectionProperties()”方法不存在...这是完整的错误:
Exception in thread "main" java.lang.NoSuchMethodError:
com.google.api.services.bigquery.model.JobConfigurationQuery.getConnectionProperties()Ljava/util/List;
at
com.google.cloud.bigquery.QueryJobConfiguration$Builder.(QueryJobConfiguration.java:250)
at
com.google.cloud.bigquery.QueryJobConfiguration$Builder.(QueryJobConfiguration.java:95)
at
com.google.cloud.bigquery.QueryJobConfiguration.fromPb(QueryJobConfiguration.java:1060)
at
com.google.cloud.bigquery.JobConfiguration.fromPb(JobConfiguration.java:128)
at
com.google.cloud.bigquery.JobInfo$BuilderImpl.(JobInfo.java:158)
at com.google.cloud.bigquery.Job.fromPb(Job.java:497) at
com.google.cloud.bigquery.BigQueryImpl.create(BigQueryImpl.java:363)
at
com.google.cloud.bigquery.BigQueryImpl.create(BigQueryImpl.java:340)
at
bce_datahub.bigquery_template_0_1.bigquery_template.tJava_1Process(bigquery_template.java:383)
at
bce_datahub.bigquery_template_0_1.bigquery_template.runJobInTOS(bigquery_template.java:757)
at
bce_datahub.bigquery_template_0_1.bigquery_template.main(bigquery_template.java:583)
我看到这个版本:
包含这个方法,但如果我用这个版本替换它,我会得到另一个错误:
NoClassDefFoundError: com/google/api/services/bigquery/Bigquery$Builder
所以这个版本好像没有这个class.
我正在开发一个 Java 程序来:
- 在 Bigquery 上执行查询
- 在 Google 云存储上导出 BigQuery table。
对于第 2 步,我没有遇到任何问题。这些是我正在使用的 jara:
我正在使用 Talend Studio,所以我必须安装 jars:一个接一个。这是产生问题的脚本的一部分:
import java.io.File;
import java.io.FileInputStream;
import com.google.cloud.RetryOption;
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.QueryJobConfiguration;
import com.google.cloud.bigquery.Job;
import com.google.cloud.bigquery.JobInfo;
import com.google.cloud.bigquery.Table;
import com.google.cloud.bigquery.TableId;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.auth.oauth2.ServiceAccountCredentials;
import com.google.auth.oauth2.AccessToken;
import org.threeten.bp.Duration;
//INPUT
String credentialsPath = "...";
String projectId = "...";
String datasetName = "...";
String tableName = "...";
String bucketName = "...";
String objectName = "...";
String destinationUri = "...";
String dataFormat = "...";
String destFilePath = "...";
String ddl =
"DROP TABLE IF EXISTS `" + datasetName + "." + tableName + "`;"
+ "CREATE TABLE `" + datasetName + "." + tableName + "` AS "
+ "SELECT * FROM ...";
//Authentification
File credentialsFilePath = new File(credentialsPath);
FileInputStream serviceAccountStream = new FileInputStream(credentialsFilePath);
GoogleCredentials credentials;
credentials = ServiceAccountCredentials.fromStream(serviceAccountStream);
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests
BigQuery bigquery = BigQueryOptions.newBuilder()
.setProjectId(projectId)
.setCredentials(credentials).build()
.getService();
// Execute query on BigQuery
QueryJobConfiguration config = QueryJobConfiguration.newBuilder(ddl).build();
Job job = bigquery.create(JobInfo.of(config));
Job completedJob =
job.waitFor(
RetryOption.initialRetryDelay(Duration.ofSeconds(1)), //Checking period time [Optional]
RetryOption.totalTimeout(Duration.ofMinutes(3)) //Timeout [Optional]
);
if (completedJob == null)
{
System.out.println("Job not executed since it no longer exists.");
return;
} else if (completedJob.getStatus().getError() != null)
{
System.out.println("BigQuery was unable to execute the query due to an error: \n" + job.getStatus().getError());
return;
}
System.out.println("Table create successful. Check in " + datasetName + " for the " + tableName + " table.");
...
已解决。
我安装在 https://mvnrepository.com/artifact/com.google.apis/google-api-services-bigquery/v2-rev20201030-1.31.0 找到的 jar。
我不明白为什么我从这里下载的 jar https://www.javadoc.io/doc/com.google.apis/google-api-services-bigquery/latest/com/google/api/services/bigquery/model/JobConfigurationQuery.html
无效。
好像不一样。但是我解决了我的问题。
我在使用 com.google.api.services 时遇到一些问题。我正在使用此版本“BigQuery API v2(修订版 459)”:
确实“getConnectionProperties()”方法不存在...这是完整的错误:
Exception in thread "main" java.lang.NoSuchMethodError: com.google.api.services.bigquery.model.JobConfigurationQuery.getConnectionProperties()Ljava/util/List; at com.google.cloud.bigquery.QueryJobConfiguration$Builder.(QueryJobConfiguration.java:250) at com.google.cloud.bigquery.QueryJobConfiguration$Builder.(QueryJobConfiguration.java:95) at com.google.cloud.bigquery.QueryJobConfiguration.fromPb(QueryJobConfiguration.java:1060) at com.google.cloud.bigquery.JobConfiguration.fromPb(JobConfiguration.java:128) at com.google.cloud.bigquery.JobInfo$BuilderImpl.(JobInfo.java:158) at com.google.cloud.bigquery.Job.fromPb(Job.java:497) at com.google.cloud.bigquery.BigQueryImpl.create(BigQueryImpl.java:363) at com.google.cloud.bigquery.BigQueryImpl.create(BigQueryImpl.java:340) at bce_datahub.bigquery_template_0_1.bigquery_template.tJava_1Process(bigquery_template.java:383) at bce_datahub.bigquery_template_0_1.bigquery_template.runJobInTOS(bigquery_template.java:757) at bce_datahub.bigquery_template_0_1.bigquery_template.main(bigquery_template.java:583)
我看到这个版本:
包含这个方法,但如果我用这个版本替换它,我会得到另一个错误:
NoClassDefFoundError: com/google/api/services/bigquery/Bigquery$Builder
所以这个版本好像没有这个class.
我正在开发一个 Java 程序来:
- 在 Bigquery 上执行查询
- 在 Google 云存储上导出 BigQuery table。
对于第 2 步,我没有遇到任何问题。这些是我正在使用的 jara:
我正在使用 Talend Studio,所以我必须安装 jars:一个接一个。这是产生问题的脚本的一部分:
import java.io.File;
import java.io.FileInputStream;
import com.google.cloud.RetryOption;
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.QueryJobConfiguration;
import com.google.cloud.bigquery.Job;
import com.google.cloud.bigquery.JobInfo;
import com.google.cloud.bigquery.Table;
import com.google.cloud.bigquery.TableId;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.auth.oauth2.ServiceAccountCredentials;
import com.google.auth.oauth2.AccessToken;
import org.threeten.bp.Duration;
//INPUT
String credentialsPath = "...";
String projectId = "...";
String datasetName = "...";
String tableName = "...";
String bucketName = "...";
String objectName = "...";
String destinationUri = "...";
String dataFormat = "...";
String destFilePath = "...";
String ddl =
"DROP TABLE IF EXISTS `" + datasetName + "." + tableName + "`;"
+ "CREATE TABLE `" + datasetName + "." + tableName + "` AS "
+ "SELECT * FROM ...";
//Authentification
File credentialsFilePath = new File(credentialsPath);
FileInputStream serviceAccountStream = new FileInputStream(credentialsFilePath);
GoogleCredentials credentials;
credentials = ServiceAccountCredentials.fromStream(serviceAccountStream);
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests
BigQuery bigquery = BigQueryOptions.newBuilder()
.setProjectId(projectId)
.setCredentials(credentials).build()
.getService();
// Execute query on BigQuery
QueryJobConfiguration config = QueryJobConfiguration.newBuilder(ddl).build();
Job job = bigquery.create(JobInfo.of(config));
Job completedJob =
job.waitFor(
RetryOption.initialRetryDelay(Duration.ofSeconds(1)), //Checking period time [Optional]
RetryOption.totalTimeout(Duration.ofMinutes(3)) //Timeout [Optional]
);
if (completedJob == null)
{
System.out.println("Job not executed since it no longer exists.");
return;
} else if (completedJob.getStatus().getError() != null)
{
System.out.println("BigQuery was unable to execute the query due to an error: \n" + job.getStatus().getError());
return;
}
System.out.println("Table create successful. Check in " + datasetName + " for the " + tableName + " table.");
...
已解决。
我安装在 https://mvnrepository.com/artifact/com.google.apis/google-api-services-bigquery/v2-rev20201030-1.31.0 找到的 jar。
我不明白为什么我从这里下载的 jar https://www.javadoc.io/doc/com.google.apis/google-api-services-bigquery/latest/com/google/api/services/bigquery/model/JobConfigurationQuery.html
无效。
好像不一样。但是我解决了我的问题。