4

我在 Impala 中创建了一个外部表。我正在编写一个 shell 脚本来检查该表中是否存在特定列。

我们可以使用以下查询在 MySql 中执行此操作。

SELECT * 
FROM information_schema.COLUMNS 
WHERE 
    TABLE_SCHEMA = 'db_name' 
    AND TABLE_NAME = 'table_name' 
    AND COLUMN_NAME = 'column_name'

但是,在 Impala 中,我们如何才能做到这一点?

4

2 回答 2

5

不幸的是,您无法在 Impala 中查询架构元数据。您可以使用describe table(参见文档)并检查输出。

于 2014-05-08T15:39:26.153 回答
2

Cloudera Impala中有SHOW 语句

SHOW 语句是一种获取有关不同类型 Impala 对象信息的灵活方式。

对于您的用例,您可以使用SHOW COLUMN STATS Statement,例如:

SHOW COLUMN STATS myTableName

它将返回以下信息:

+------------------------+--------+------------------+--------+----------+----------+
| Column                 | Type   | #Distinct Values | #Nulls | Max Size | Avg Size |
+------------------------+--------+------------------+--------+----------+----------+
| my_column_id           | INT    | -1               | -1     | 4        | 4        |
| my_string_column_name  | STRING | -1               | -1     | -1       | -1       |
| some_column_name       | INT    | -1               | -1     | 4        | 4        |
...
于 2016-05-11T11:45:25.077 回答