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)
这里有一些更多的选择。首先让我们从任意 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)
在 PySpark 中,它可以按如下方式完成:
spark.catalog._jcatalog.tableExists("schemaname.tablename")
Run Code Online (Sandbox Code Playgroud)