我有一个本地目录,用于存储配置单元表数据。

我需要列出所有使用本地目录的表。

这些表(托管表)存储在hive Default DB中,该数据库允许将数据存储在其他本地目录中。

我的本地目录:/ abc / efg / data /

表数据存储在子文件夹中,例如123,456,789等

对于表xyz位置为/ abc / efg / data / 123,PQR位置为/ abc / efg / data / 456。

我正在尝试使用

配置单元-e“显示表”> All_tables 列出所有表并重定向到文件

对于All_tables中的每一行(每个表)

hive -e“desc格式化$ line” | grep'/ abc / efg / data /'>> Tables_My_local_dir

但是这会导致一些性能问题,因为我在DB中有6000个表。

请帮助我列出所有使用本地目录且性能最佳的表。

最佳答案

我假设您想通过从 desc格式的命令中提取默认数据库中托管表的方式列出表及其对应的位置信息。

如果我的理解是正确的,建议您继续查询Hive Meta-store,前提是它是在外部配置的,并且您具有获取相同信息的必要权限

在元商店上查询:

SELECT T.TBL_NAME AS TABLE_NAME,S.LOCATION AS LOCATION FROM TBLS T LEFT JOIN SDS S ON T.SD_ID=S.SD_ID WHERE T.TBL_TYPE='MANAGED_TABLE' AND T.DB_ID=1 ;

注意:查询中的,默认数据库的DB_ID为1

输出:
------------+------------------------------------------------------------+
| TABLE_NAME | LOCATION                                                   |
+------------+------------------------------------------------------------+
| sample     | hdfs://********:8020/user/hive/warehouse/sample |
...

关于hadoop - 本地目录中的配置单元表列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38820991/

10-12 23:00