【问题标题】: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 表是否存在
【问题讨论】:
标签:
python-2.7
pyspark
apache-spark-sql
【解决方案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")