查询以在IMPALA中一起显示所有列,表和模式名称

时间:2020-07-02 07:39:22

标签: sql hadoop impala

我想在一个查询中获取impala db的元数据。大概会像

SELECT columnname,tablename,schemaname from SYSTEM.INFO

有没有办法做到这一点?而且我不想只获取当前表的列;

SHOW COLUMN STATS db.table_name

此查询不是我的问题的答案。我想在一个查询中选择所有元数据。

1 个答案:

答案 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的传统PostgreSQLmetastore数据库中,Hive保留了这种类型的数据库。因此,只要所有列都使用Impala支持的数据类型,文件格式和压缩编解码器,Impala就可以访问Hive定义或加载的表。

如果要一次性查询此信息,则必须查询MySQLPostgreSQLOracle等,这取决于您的具体情况。

例如,在我的情况下,Impalametadata保留在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)

希望这会有所帮助。