我已经设置了一个由 postgres 支持的独立 hive-metastore(v3.0.0),并在 Spark sql 中创建了外部表。外部数据位置位于天蓝色 blob 中。我可以使用 dbname.tablename 而不是实际位置来查询这些表。这些是非分区表。
当我检查 Metastore postgres db,TBLS 表时,我可以看到字段 TBL_TYPE 设置为 EXTERNAL_TABLE,并且有一个映射到表 SDS 的键 SD_ID。 SDS 表有一个 LOCATION 字段,该字段不显示实际的 blob 位置。相反,它显示数据库路径并附加一个 PLACEHOLDER。
Location
file:/home/ash/mydatabase/youraddress4-__PLACEHOLDER__
上述本地位置根本不存在。
spark 或 hive Metastore 如何解析表的实际位置以及它实际存储在 Metastore 数据库中的位置?
有同样的问题(尽管使用 Hive 4.0.0)。最终执行了
pg_dump
,然后在输出文件中搜索预期的 abfss://
路径。在 abfss://
表中找到了预期的 SERDE_PARAMS
路径,因此推测 Hive 使用它来解析实际位置。