diff --git a/sql/core/src/main/scala/org/apache/spark/sql/internal/SharedState.scala b/sql/core/src/main/scala/org/apache/spark/sql/internal/SharedState.scala index 6232c18b1cea8f9e12b7c7e1398670358fef50c9..8de95fe64e66382e69ea6c8ec04b03e852fe7f34 100644 --- a/sql/core/src/main/scala/org/apache/spark/sql/internal/SharedState.scala +++ b/sql/core/src/main/scala/org/apache/spark/sql/internal/SharedState.scala @@ -92,8 +92,12 @@ private[sql] class SharedState(val sparkContext: SparkContext) extends Logging { { val defaultDbDefinition = CatalogDatabase( SessionCatalog.DEFAULT_DATABASE, "default database", warehousePath, Map()) - // Initialize default database if it doesn't already exist - externalCatalog.createDatabase(defaultDbDefinition, ignoreIfExists = true) + // Initialize default database if it doesn't exist + if (!externalCatalog.databaseExists(SessionCatalog.DEFAULT_DATABASE)) { + // There may be another Spark application creating default database at the same time, here we + // set `ignoreIfExists = true` to avoid `DatabaseAlreadyExists` exception. + externalCatalog.createDatabase(defaultDbDefinition, ignoreIfExists = true) + } } /**