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

use*_*470 6 python-2.7 apache-spark-sql pyspark

我想使用以下命令检查schemaname.tablenameHive 中是否存在表pysparkSQL.

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

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

SMa*_*MaZ 11

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
Run Code Online (Sandbox Code Playgroud)

或者

spark.catalog._jcatalog.tableExists("schema.table")
True
Run Code Online (Sandbox Code Playgroud)


abi*_*sis 6

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

选项 1 - Spark >= 2.0

使用spark.catalog.listTables即:

"your_table" in [t.name for t in spark.catalog.listTables("default")] == True 
Run Code Online (Sandbox Code Playgroud)

选项 2 - Spark >= 1.3

使用sqlContext.tableNames即:

"your_table" in sqlContext.tableNames("default") == True
Run Code Online (Sandbox Code Playgroud)

选项 3

使用spark.sql即:

spark.sql("SHOW TABLES LIKE 'your_table'").count() == 1
Run Code Online (Sandbox Code Playgroud)


Dav*_*rba 5

在 PySpark 中,它可以按如下方式完成:

spark.catalog._jcatalog.tableExists("schemaname.tablename")
Run Code Online (Sandbox Code Playgroud)