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脚本生成表名和属性名的主要内容,如果未能解决你的问题,请参考以下文章

通过表名和时间查看hive分区表的数据

解析 SQL 脚本以提取表名和列名

hive数据压缩脚本实现

Hadoop日志分析系统启动脚本

如何在 Oracle 中动态分析给定模式名和表名的元数据?

Hadoop双节点&Hive搭建自动化脚本