Мы только что переместились в Databricks Delta из паркета с помощью Hive metastore. Пока что все работает нормально, когда я пытаюсь распечатать местоположение новой таблицы Delta, используя DESCRIBE EXTENDED my_table
, местоположение правильное, хотя оно отличается от того, которое найдено в базе данных hiveMetastore
. Когда я обращаюсь к базе данных hiveMetastore
, я могу успешно определить целевую таблицу (также провайдер правильно настроен на Delta). Чтобы получить предыдущую информацию, я выполняю объединение таблиц sds
, dbs
, tbls
и table_params
из hiveMetastore db
, фильтруя по имени таблицы, как показано ниже:
val sdsDF = spark.read
.format("jdbc")
.option("url", activeConnection.url)
.option("dbtable", "hiveMetastore.SDS")
.option("user", activeConnection.user)
.option("password", activeConnection.pwd)
.load()
val tblsDf = spark.read
.format("jdbc")
.option("url", activeConnection.url)
.option("dbtable", "hiveMetastore.TBLS")
.option("user", activeConnection.user)
.option("password", activeConnection.pwd)
.load()
val dbsDf = spark.read
.format("jdbc")
.option("url", activeConnection.url)
.option("dbtable", "hiveMetastore.DBS")
.option("user", activeConnection.user)
.option("password", activeConnection.pwd)
.load()
val paramsDf = spark.read
.format("jdbc")
.option("url", activeConnection.url)
.option("dbtable", "hiveMetastore.TABLE_PARAMS")
.option("user", activeConnection.user)
.option("password", activeConnection.pwd)
.load()
val resDf = sdsDF.join(tblsDf, "SD_ID")
.join(dbsDf, "DB_ID")
.join(paramsDf, "TBL_ID")
.where('TBL_NAME.rlike("mytable"))
.select($"TBL_NAME", $"TBL_TYPE", $"NAME".as("DB_NAME"), $"DB_LOCATION_URI", $"LOCATION".as("TABLE_LOCATION"), $"PARAM_KEY", $"PARAM_VALUE")
Все предыдущие выполнены из блокнота данных.
Мой вопрос: почему я получаю два разных местоположения, даже если имя таблицы совпадает? Где находится правильное расположение таблиц Delta, если не в hiveMetastore db?