我想获取所有数据库及其相关的表和列信息。显然我可以从Metastore做到这一点。但我无法访问它。那么有没有其他方法,而不是逐个查询每个数据库。
答案 0 :(得分:0)
您应该能够运行以下命令。我想你可以编写脚本来运行所有数据库和所有表
SHOW DATABASES;
SHOW TABLES;
DESCRIBE <table_name>;
答案 1 :(得分:0)
您需要python,但是我这样做是这样的:
databases = run_hive_query('show schemas')
databases = list(databases.database_name)
schema = {'DB':[],
'Table':[],
'Column':[],
'DataType':[]}
for db in databases:
tables = run_hive_query( 'show tables from ' +db)
tables = list(tables.tab_name)
for tb in tables:
try:
columns = (run_hive_query('desc ' + db+'.'+tb))
print(db + ' '+ tb)
except:
print('failed'+db + ' '+ tb)
try:
for x in range(columns.shape[0]):
schema['DB'].append(db)
schema['Table'].append(tb)
schema['Column'].append(columns.iloc[x][0])
schema['DataType'].append(columns.iloc[x][1])
except:
print('failed'+db + ' '+ tb)