问题:查询以在 IMPALA 中一起显示所有列、表和模式名称

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

SELECT columnname,tablename,schemaname from SYSTEM.INFO

有没有办法做到这一点?例如,我不想只获取当前表列;

SHOW COLUMN STATS db.table_name

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

解答

impala-shell你有如下命令:

describe table_name

describe formatted table_name

describe database_name

EXPLAIN { select_query | ctas_stmt | insert_stmt }

SHOW Statement是一种获取不同类型 Impala 对象信息的灵活方式。您可以通过此链接访问Impala documentationSHOW 语句。

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

特别是,Impala 将其表定义保存在称为metastore的传统MySQLPostgreSQL数据库中,Hive 保存此类数据的同一数据库。因此,Impala 可以访问由 Hive 定义或加载的表,只要所有列都使用 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)

希望这可以帮助。

Logo

华为、百度、京东云现已入驻,来创建你的专属开发者社区吧!

更多推荐