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

时间:2019-09-23 17:25:58

标签: python-2.7 pyspark apache-spark-sql

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

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

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

3 个答案:

答案 0 :(得分:4)

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

如果您使用的是 spark <2.3.0 ,则可以按以下方式使用:

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

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

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

答案 1 :(得分:4)

还有更多选择。首先,让我们使用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

答案 2 :(得分:3)

可以在PySpark中完成以下操作:

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