Hadoop Hive:使用Bash脚本生成表名和属性名

时间:2018-02-28 08:51:26

标签: hadoop hive

在我们的环境中,我们无法直接查询Hive元存储。

我需要动态生成一组表的tablename,columnname对。

我试图通过运行"描述扩展$ tablename"来实现这一点。到所有表的文件,并从文件中选取表名和列名对。

是否有更简单的方法可以完成/除此之外可以完成。

所需的输出就像

table1|col1
table1|col2
table1|col3
table2|col1
table2|col2
table3|col1

1 个答案:

答案 0 :(得分:0)

此脚本将以单个表的所需格式打印列。 AWK从describe命令解析字符串,只接受column_name,与" |"连接。和table_name变量,每个字符串打印\ n作为它们之间的分隔符。

#!/bin/bash

#Set table name here
TABLE_NAME=your_schema.your_table

    TABLE_COLUMNS=$(hive -S -e "set hive.cli.print.header=false; describe ${TABLE_NAME};" | awk -v table_name="${TABLE_NAME}" -F " " 'f&&!NF{exit}{f=1}f{printf c table_name "|" toupper($1)}{c="\n"}')

您可以使用show tables命令轻松修改它以生成所有表的输出。

更简单的方法是直接访问元数据数据库。