我希望在Hive中获取所有表定义。我知道对于单表定义,我可以使用类似-

  describe <<table_name>>
  describe extended <<table_name>>

但是,我找不到获取所有表定义的方法。大型存储区中是否有任何类似于mysql中Information_Schema的表,或者是否有获取所有表定义的命令?

最佳答案

您可以通过编写一个简单的bash脚本和一些bash命令来做到这一点。

首先,使用以下命令将数据库中的所有表名写入文本文件:

$hive -e 'show tables in <dbname>' | tee tables.txt

然后创建一个bash脚本(describe_tables.sh)遍历此列表中的每个表:
while read line
do
 echo "$line"
 eval "hive -e 'describe <dbname>.$line'"
done

然后执行脚本:
$chmod +x describe_tables.sh
$./describe_tables.sh < tables.txt > definitions.txt

definitions.txt文件将包含所有表定义。

09-08 00:42