如何检查Impala表中是否存在列?

时间:2014-05-08 14:48:11

标签: impala

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

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

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

但是,在Impala中,我们怎样才能实现这一目标?

2 个答案:

答案 0 :(得分:5)

很遗憾,您无法在Impala中查询架构元数据。您可以使用describe table(请参阅the documentation)并检查输出。

答案 1 :(得分:2)

SHOW Statement中有Cloudera Impala

  

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        |
...