查询以在 IMPALA 中一起显示所有列、table 和架构名称

Query to show all column, table and schema names together in IMPALA

我想在一次查询中获取 impala 数据库的元数据。大概会是这样

SELECT columnname,tablename,schemaname from SYSTEM.INFO

有办法吗?例如,我不想只获取当前表列;

SHOW COLUMN STATS db.table_name

此查询不是我的问题的答案。我想 select 一次查询中的所有元数据。

impala-shell 你有这样的命令:

describe table_name

describe formatted table_name

describe database_name

EXPLAIN { select_query | ctas_stmt | insert_stmt }

SHOW Statement 是获取不同类型 Impala 对象信息的灵活方式。你可以按照这个 link 到 Impala documentation SHOW statement.

另一方面,有关架构对象的信息保存在元存储数据库中。此数据库在 Impala 和 Hive 之间共享。

特别是,Impala 将其 table 定义保存在传统的 MySQLPostgreSQL 数据库中,称为 metastore,与 Hive 所在的数据库相同保留此类数据。因此,Impala 可以访问由 Hive 定义或加载的 table,只要所有列都使用 Impala 支持的数据类型、文件格式和压缩编解码器。

如果您想一次查询此信息,则必须查询 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)

希望这对您有所帮助。