我在Impala中创建了一个外部表。我正在编写一个shell脚本,用于检查该表中是否存在特定列。
我们可以使用以下查询在MySql中执行此操作。
SELECT *
FROM information_schema.COLUMNS
WHERE
TABLE_SCHEMA = 'db_name'
AND TABLE_NAME = 'table_name'
AND COLUMN_NAME = 'column_name'
但是,在Impala中,我们怎样才能实现这一目标?
答案 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 |
...