如何使用 PySpark 检查 Hive 表是不是存在

Posted

技术标签:

【中文标题】如何使用 PySpark 检查 Hive 表是不是存在【英文标题】:How to check if a Hive table exists using PySpark如何使用 PySpark 检查 Hive 表是否存在 【发布时间】:2019-09-23 17:25:58 【问题描述】:

我想使用 pysparkSQL 检查 Hive 中是否存在表 schemaname.tablename

Scala 中有一个选项spark.catalog.tableExists("schemaname.tablename")。但是,通过pySpark 不提供相同的功能。

寻找一种快速而干净的方法来使用PySpark检查 Hive 表是否存在

【问题讨论】:

【参考方案1】:

pyspark.sql.catalog 模块包含在 spark >= 2.3.0 中

如果您使用的是 spark ,您可以像下面这样使用:

spark._jsparkSession.catalog().tableExists("schema.table")
True

spark._jsparkSession.catalog().tableExists("schema.table_false")
False

spark.catalog._jcatalog.tableExists("schema.table")
True

【讨论】:

【参考方案2】:

这里有更多选项。首先,让我们使用 df.write.saveAsTable("your_table") 从任意 df 创建一些随机表。

选项 1 - Spark >= 2.0

使用spark.catalog.listTables 即:

"your_table" in [t.name for t in spark.catalog.listTables("default")] == True 

选项 2 - Spark >= 1.3

使用sqlContext.tableNames 即:

"your_table" in sqlContext.tableNames("default") == True

选项 3

使用spark.sql 即:

spark.sql("SHOW TABLES LIKE 'your_table'").count() == 1

【讨论】:

【参考方案3】:

在 PySpark 中可以如下完成:

spark.catalog._jcatalog.tableExists("schemaname.tablename")

【讨论】:

以上是关于如何使用 PySpark 检查 Hive 表是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

与使用 Pyspark 的另一个表相比,检查数据框中是不是存在重复项 [重复]

如何使用 pyspark 将 null 分配给配置单元表列

PySpark/Hive:如何使用 LazySimpleSerDe 创建表以转换布尔值“t”/“f”?

如何在 Spark 2.4.0 中使用 PySpark API 将表插入 Hive

PySpark/HIVE:附加到现有表

使用 pyspark 向 hive 表添加注释