我想知道是否有一种方法可以使用一行程序从hive获取数据位置。像这样的
select d.location from ( describe formatted table_name partition ( .. ) ) as d;
我目前的解决方案是获取完整的输出,然后解析它。
am46iovg1#
与传统的rdbms不同,hive元数据存储在单独的数据库中。在大多数情况下,它是在mysql或postgres中。metastore数据库的详细信息可以在hive-site.conf中找到。如果您有权访问metastore数据库,则可以在表tbls上运行select以获取有关表和列的详细信息\u v2以获取有关列等的详细信息。。如果您没有访问元存储的权限,唯一的选择就是描述每个表以获取详细信息。如果有很多数据库和表,可以编写一个shell脚本,使用“showtables”获取表列表,并在表周围循环。
06odsfpq2#
如果您无权访问元数据,则有两个方法。解析 DESCRIBE TABLE 在贝壳里就像这样回答:https://stackoverflow.com/a/43804621/2700344配置单元还有一个虚拟列输入文件名。
DESCRIBE TABLE
select INPUT__FILE__NAME from table
将为每个文件输出位置URL。您可以按“/”拆分url、获取所需元素、聚合等
2条答案
按热度按时间am46iovg1#
与传统的rdbms不同,hive元数据存储在单独的数据库中。在大多数情况下,它是在mysql或postgres中。metastore数据库的详细信息可以在hive-site.conf中找到。如果您有权访问metastore数据库,则可以在表tbls上运行select以获取有关表和列的详细信息\u v2以获取有关列等的详细信息。。
如果您没有访问元存储的权限,唯一的选择就是描述每个表以获取详细信息。如果有很多数据库和表,可以编写一个shell脚本,使用“showtables”获取表列表,并在表周围循环。
06odsfpq2#
如果您无权访问元数据,则有两个方法。
解析
DESCRIBE TABLE
在贝壳里就像这样回答:https://stackoverflow.com/a/43804621/2700344配置单元还有一个虚拟列输入文件名。
将为每个文件输出位置URL。您可以按“/”拆分url、获取所需元素、聚合等