我想获取所有数据库及其相关的表和列信息。显然我可以在metastore上做。但我没有权限。那么有没有其他方法代替逐个查询每个数据库呢。
2o7dmzc51#
您应该能够运行以下命令。我想您可以编写脚本,让它在所有数据库和表中运行
SHOW DATABASES; SHOW TABLES; DESCRIBE <table_name>;
ymzxtsji2#
你需要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)
2条答案
按热度按时间2o7dmzc51#
您应该能够运行以下命令。我想您可以编写脚本,让它在所有数据库和表中运行
ymzxtsji2#
你需要python,但我是这样做的: