Hadoop Hive:使用Bash脚本生成表名和属性名
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop Hive:使用Bash脚本生成表名和属性名相关的知识,希望对你有一定的参考价值。
在我们的环境中,我们无法直接查询Hive Metastore。
我需要动态生成一组表的tablename,columnname对。
我试图通过将“describe extended $ tablename”运行到所有表的文件并从文件中选取tablename和column name对来实现此目的。
是否有更简单的方法完成/除了这种方式可以做到。
期望的输出就像
table1|col1
table1|col2
table1|col3
table2|col1
table2|col2
table3|col1
答案
此脚本将以单个表的所需格式打印列。 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="
"}')
例如,您可以使用show tables
命令轻松修改它以生成所有表的输出。
更简单的方法是直接访问元数据数据库。
以上是关于Hadoop Hive:使用Bash脚本生成表名和属性名的主要内容,如果未能解决你的问题,请参考以下文章