Я запускаю пример кода Java, в котором пытаюсь получить описание таблицы BigQuery. Когда я запускаю его на своем локальном компьютере, он работает нормально. Но когда я иду в облако Google, развертываю банку в GCS и запускаю ее через dataproc, я получаю следующую проблему.
Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor;
at com.google.api.gax.retrying.BasicRetryingFuture.<init>(BasicRetryingFuture.java:88)
at com.google.api.gax.retrying.DirectRetryingExecutor.createFuture(DirectRetryingExecutor.java:88)
at com.google.api.gax.retrying.DirectRetryingExecutor.createFuture(DirectRetryingExecutor.java:74)
at com.google.cloud.RetryHelper.run(RetryHelper.java:75)
at com.google.cloud.RetryHelper.runWithRetries(RetryHelper.java:50)
at com.google.cloud.bigquery.BigQueryImpl.getTable(BigQueryImpl.java:665)
Образец кода:
private static BigQuery bigquery = null;
static {
bigquery = BigQueryOptions.newBuilder()
.setProjectId("**PROJECT_ID**")
.build().getService();
}
public static void getTable(String projectId, String datasetName, String tableName) {
try {
TableId tableId = TableId.of(projectId, datasetName, tableName);
Table table = bigquery.getTable(tableId);
System.out.println("Table info: " + table.getDescription());
} catch (BigQueryException e) {
System.out.println("Table not retrieved. \n" + e.toString());
}
}
pom.xml — это единственная зависимость, которая есть в моем pom.xml. Я видел предложения из более раннего сообщения, чтобы проверить конфликт зависимостей гуавы, но в моем случае я не вижу конфликта, поскольку у меня нет другой зависимости, которая может конфликтовать с этим.
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-bigquery</artifactId>
<version>1.116.10</version>
</dependency>
В пользовательском интерфейсе Dataproc я отправляю это задание, передавая тип задания как Spark.