我有一个代码块,用于检查给定的配置单元";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()
}