我想使用schemaname.tablename
检查Hive中是否存在表pysparkSQL
。
Scala spark.catalog.tableExists("schemaname.tablename")
中有一个选项。但是,pySpark
无法提供相同的功能。
寻找一种快速,干净的方法来使用PySpark
来检查Hive表是否存在
答案 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")