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



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

我需要为一组表动态生成表名、列名对。

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

除了这种方式之外,还有其他更简单的方法/可以完成.

所需的输出类似于

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

此脚本将以所需的格式打印单个表的列。AWK 从描述命令解析字符串,仅取column_name,与"|"和table_name变量连接,每个字符串之间都印有 作为分隔符。

#!/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输出。

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

最新更新