如何检查PySpark中是否存在临时视图?

时间:2018-10-11 17:51:22

标签: pyspark

我了解如何检查PySpark中的表是否存在:

>>> spark.catalog.setCurrentDatabase("staging")
>>> 'test_table' in sqlContext.tableNames()
True

但是视图呢? 如果是这样创建的:

df = sqlContext.sql("SELECT * FROM staging.test_table")
df.createOrReplaceTempView("test_view")
df.persist(p.persistLevel)

如何稍后在代码中检查“测试视图”是否存在?

2 个答案:

答案 0 :(得分:1)

您可以使用sqlContext.tableNames和sqlContext.tables

>>> sqlContext.registerDataFrameAsTable(df, "table1")
>>> "table1" in sqlContext.tableNames()
True
>>> "table1" in sqlContext.tableNames("default")
True

答案 1 :(得分:0)

“默认”是定义视图的上下文。

>>> spark.catalog.setCurrentDatabase("staging")
>>> 'test_view' in sqlContext.tableNames()
False
>>> spark.catalog.setCurrentDatabase("default")
>>> 'test_view' in sqlContext.tableNames()
True

这需要一点时间(> 3秒)

更快地尝试/捕捉

try:
  _=spark.read.table('test_view')
  print('Exists!')
catch:
  print('Does not exist.')