如何使用 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/Hive:如何使用 LazySimpleSerDe 创建表以转换布尔值“t”/“f”?