hive,使用一行程序获取数据位置

omhiaaxx  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(422)

我想知道是否有一种方法可以使用一行程序从hive获取数据位置。像这样的

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

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

am46iovg

am46iovg1#

与传统的rdbms不同,hive元数据存储在单独的数据库中。在大多数情况下,它是在mysql或postgres中。metastore数据库的详细信息可以在hive-site.conf中找到。如果您有权访问metastore数据库,则可以在表tbls上运行select以获取有关表和列的详细信息\u v2以获取有关列等的详细信息。。
如果您没有访问元存储的权限,唯一的选择就是描述每个表以获取详细信息。如果有很多数据库和表,可以编写一个shell脚本,使用“showtables”获取表列表,并在表周围循环。

06odsfpq

06odsfpq2#

如果您无权访问元数据,则有两个方法。
解析 DESCRIBE TABLE 在贝壳里就像这样回答:https://stackoverflow.com/a/43804621/2700344
配置单元还有一个虚拟列输入文件名。

select INPUT__FILE__NAME from table

将为每个文件输出位置URL。您可以按“/”拆分url、获取所需元素、聚合等

相关问题