使用 scala 从 spark 中删除 bigquery 表
Posted
技术标签:
【中文标题】使用 scala 从 spark 中删除 bigquery 表【英文标题】:delete bigquery table from spark by using scala 【发布时间】:2020-07-19 04:11:15 【问题描述】:有没有办法使用 Scala 从 Spark 中删除 BigQuery 表?
我只找到了使用示例中的 Scala 从 Spark 读取和写入 BigQuery 表的方法: https://cloud.google.com/dataproc/docs/tutorials/bigquery-connector-spark-example
有人可以提供删除 BigQuery 表的示例吗?例如,我可以使用此语句“drop table if exists projectid1.dataset1.table1
”在 BigQuery 控制台中删除一个表。
请注意,我删除现有表的目的不是覆盖。我只是想删除它。请帮忙。谢谢。
【问题讨论】:
为什么要从 Spark 中进行操作? Spark 是分析引擎,而不是 JDBC 或 SQL Developer。 @MikhailIonkin 这是分析过程中的一个步骤。 【参考方案1】:请参考BigQuery API:
import com.google.cloud.spark.bigquery.repackaged.com.google.cloud.bigquery.BigQueryOptions, TableId
val bq = BigQueryOptions.getDefaultInstance().getService()
val table = bq.getTable(TableId.of("projectid1", "dataset1", "table1"))
if(table != null)
table.delete()
请注意,这应该可以在 Dataproc 中使用。在其他集群中,您需要正确设置凭证
【讨论】:
谢谢@David Rabinowitz。我试过了,但它给了我一些错误:import com.google.cloud.bigquery.BigQueryOptions com.google.cloud.bigquery.BigQueryOptions import com.google.cloud.bigquery.BigQueryOptions scala> val bq = BigQueryOptions.getDefaultInstance()。 getService() java.lang.NoClassDefFoundError: com/google/common/base/MoreObjects at com.google.cloud.ServiceOptions.com.google.cloud.spark.bigquery.repackaged.com.google.cloud.bigquery
中有 bigquery 客户端(使用 spark-bigquery-with-dependencies 工件
与scala版本无关。请查看修改后的代码示例,看看它是否适合您。
你能先试试 spark-shell 吗?以上只是用 Scala 2.11.12 和 spark 2.4.5 测试过以上是关于使用 scala 从 spark 中删除 bigquery 表的主要内容,如果未能解决你的问题,请参考以下文章
Spark Scala Dataframe:删除第 n 条记录
从 Kafka 主题读取数据处理数据并使用 scala 和 spark 写回 Kafka 主题
解决SecureCRT下spark-shell中scala无法删除问题