我想在一个查询中获取impala db的元数据。大概会像
SELECT columnname,tablename,schemaname from SYSTEM.INFO
有没有办法做到这一点?而且我不想只获取当前表的列;
SHOW COLUMN STATS db.table_name
此查询不是我的问题的答案。我想在一个查询中选择所有元数据。
答案 0 :(得分:1)
在impala-shell
中,您有以下命令:
describe table_name
describe formatted table_name
describe database_name
EXPLAIN { select_query | ctas_stmt | insert_stmt }
和SHOW Statement
是获取有关不同类型的Impala对象的信息的灵活方法。您可以通过此链接访问Impala documentation
SHOW statement。
另一方面,有关架构对象的信息保存在metastore数据库中。该数据库在Impala和Hive之间共享。
尤其是,Impala将其表定义保存在称为MySQL
的传统PostgreSQL
或metastore
数据库中,Hive保留了这种类型的数据库。因此,只要所有列都使用Impala支持的数据类型,文件格式和压缩编解码器,Impala就可以访问Hive定义或加载的表。
如果要一次性查询此信息,则必须查询MySQL
,PostgreSQL
,Oracle
等,这取决于您的具体情况。
例如,在我的情况下,Impala
将metadata
保留在MySQL
中。
use metastore;
-- Database changed
SHOW tables;
+---------------------------+
| Tables_in_metastore |
+---------------------------+
| BUCKETING_COLS |
| CDS |
| COLUMNS_V2 |
| COMPACTION_QUEUE |
| COMPLETED_TXN_COMPONENTS |
| DATABASE_PARAMS |
| DBS |
.......
........
| TAB_COL_STATS |
| TBLS |
| TBL_COL_PRIVS |
| TBL_PRIVS |
| TXNS |
| TXN_COMPONENTS |
| TYPES |
| TYPE_FIELDS |
| VERSION |
+---------------------------+
54 rows in set (0.00 sec)
SELECT * FROM VERSION;
+--------+----------------+----------------------------+-------------------+
| VER_ID | SCHEMA_VERSION | VERSION_COMMENT | SCHEMA_VERSION_V2 |
+--------+----------------+----------------------------+-------------------+
| 1 | 1.1.0 | Hive release version 1.1.0 | 1.1.0-cdh5.12.0 |
+--------+----------------+----------------------------+-------------------+
1 row in set (0.00 sec)
希望这会有所帮助。