我了解如何检查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)
如何稍后在代码中检查“测试视图”是否存在?
答案 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.')