1

我想知道是否有一种方法可以使用单线从蜂巢中获取数据位置。就像是

select d.location from ( describe formatted table_name partition ( .. ) ) as d;

我目前的解决方案是获取完整的输出然后解析它。

4

2 回答 2

1

与传统的 RDBMS 不同,Hive 元数据存储在单独的数据库中。在大多数情况下,它位于 MySQL 或 Postgres 中。Metastore 数据库详细信息可以在 hive-site.conf 中找到。如果您有权访问元存储数据库,则可以在表 TBLS 上运行 SELECT 以获取有关表的详细信息,并使用 COLUMNS_V2 获取有关列等的详细信息。

如果您无权访问元存储,则唯一的选择是描述每个表以获取详细信息。如果您有很多数据库和表,您可以编写一个 shell 脚本来使用“显示表​​”获取表列表并循环这些表。

于 2017-11-15T15:40:36.017 回答
0

如果您无权访问元数据,则有两种方法。

DESCRIBE TABLE像这个答案一样在shell中解析: https ://stackoverflow.com/a/43804621/2700344

Hive 也有一个虚拟列 INPUT__FILE__NAME。

select INPUT__FILE__NAME from table

将为每个文件输出位置 URL。你可以用'/'分割URL,获取你需要的元素,聚合等

于 2017-11-16T11:02:27.617 回答