apache-spark - Google Cloud Dataproc 删除 BigQuery 表不起作用
问题描述
您好我尝试使用 Dataproc 中的java 客户端库从 BigQuery 中删除一个表,启动 spark-shell 如下:
spark-shell --packages com.google.cloud:google-cloud-bigquery:1.59.0
并导入以下依赖项
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.FieldValueList;
import com.google.cloud.bigquery.Job;
import com.google.cloud.bigquery.JobId;
import com.google.cloud.bigquery.JobInfo;
import com.google.cloud.bigquery.QueryJobConfiguration;
import com.google.cloud.bigquery.QueryResponse;
import com.google.cloud.bigquery.TableResult;
import java.util.UUID;
val bigquery = BigQueryOptions.getDefaultInstance().getService()
bigquery.delete("test","temp")
这里 test 和 temp 分别是我的数据集和表名,但在运行上述语句后,它显示以下错误:
java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor;
at com.google.api.gax.retrying.BasicRetryingFuture.<init>(BasicRetryingFuture.java:82)
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.delete(BigQueryImpl.java:386)
at com.google.cloud.bigquery.BigQueryImpl.delete(BigQueryImpl.java:375)
... 48 elided
解决方案
这是因为您在类路径上有一个没有方法的旧Guava 库版本(作为 Hadoop/Spark 依赖项提供)MoreExecutors.directExecutor
。
要解决此问题,您需要在应用程序的UberJar中包含和遮蔽/重定位(以避免与类路径上的其他库冲突)google-cloud-bigquery
库及其依赖项(包括 Guava)。
这是一个如何使用Maven Shade插件执行此操作的示例。
推荐阅读
- matlab - 如何使用 MATLAB 编辑文本文件?
- python-3.x - 带有opencv-python的烧瓶:在访问g @app.route之前保持相机运行并在发送GET请求时拍摄图像
- c# - 如何将 FileUpload 文件保存到数据库而不是文件夹
- google-sheets - 在 Google 表格中将时间戳转换为日期
- r - 如果for循环中存在值则打印输出R中的输出
- xamarin - xamarin collectionview 单元格自定义边框
- javascript - 从其他文件使用电子远程
- flutter - Flutter loader:同时调整大小和旋转
- ios - 为什么 Flutter CupertinoApp 的标题和下面的条子之间会有重叠,除非我将它包装在 Material 小部件中?
- django - Django 无法解析 url 路径 404