增量表位置存储在哪里?

时间:2020-03-10 09:29:42

标签: apache-spark databricks hive-metastore delta-lake

我们刚刚使用Hive Metastore从实木复合地板迁移到了Databricks Delta。到目前为止,一切似乎 工作正常,当我尝试使用DESCRIBE EXTENDED my_table打印新的Delta表的位置时,该位置是正确的,尽管它与hiveMetastore数据库中找到的位置不同。当我访问hiveMetastore数据库时,我可以成功识别目标表(还将提供者正确设置为Delta)。为了检索先前的信息,我正在执行sdsdbstblstable_paramshiveMetastore 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")

所有以前的操作都是从databricks笔记本执行的。

我的问题是,即使表名相同,为什么我也会得到两个不同的位置?如果不在hiveMetastore数据库上,则存储的Delta表的正确位置在哪里?

0 个答案:

没有答案