方法spark.catalog.tableExists("newDb.newTable")抛出NoSuchDatabaseException而不是返回false("newDb"不存在)



我有一个代码块,用于检查给定的配置单元";database.table";存在于当前火花会话中。

val tableExists = spark.catalog.tableExists("newDb.newTable")

我想将结果存储在布尔值中,因此,如果表或数据库不存在,我想得到false

我在不同的环境中运行完全相同的代码,它运行得很好,但现在我使用Scalatest运行它,并在数据库(在本例中为"newDb"(不存在时抛出NoSuchDatabaseException

你知道为什么会这样吗?

你应该试试这个

spark.catalog._jcatalog.tableExists("schema_name.table_name")

问题是我正在扩展的DataframeSuiteBase类(来自Holdenkarau的spark测试基本包(提供的默认SparkSession中没有启用配置单元支持。

要解决此问题,请通过将enableHiveSupport((方法添加到SparkSession构建链来覆盖DataframeSuiteBase方法beforeAll((在每次测试之前运行(:

override def beforeAll(): Unit = {
SparkSessionProvider._sparkSession = SparkSession.builder()
.master("local") // add whatever other configurations...
.enableHiveSupport()
.getOrCreate()
}

最新更新