是否可以使用impala查询包含DATE类型列的hive表?

Can hive tables that contain DATE type columns be queried using impala?

每次我尝试在 IMPALA 中 select 一个在 HIVE 中创建的 table 中的 DATE 类型字段时,我都会收到 AnalysisException: Unsupported type 'DATE'.

有什么解决方法吗?

UPDATE 这是从配置单元创建 table 模式和 impala 查询

的示例

架构:

创建 TABLE myschema.mytable(day_dt 日期, event 字符串)

分区方式 (day_id int)

存储为输入格式 'org.apache.hadoop.mapred.TextInputFormat'

输出格式 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'

Impala查询 select b.day_dt 来自 myschema.mytable b;

Impala 没有 DATE 数据类型,而 Hive 有。当您从 Impala 访问它时,您将获得 AnalysisException: Unsupported type 'DATE'。一个快速的解决方法是在 Hive 中创建一个 string 值的 date 列,并以您想要的任何方式从 Impala.

访问它

如果您存储为字符串,创建一个新的外部配置单元 table 可能会起作用,它指向与现有 table 相同的 HDFS 位置,但架构具有 day_dt 数据类型为字符串而不是日期。

这是一个真正的解决方法,它可能只适合某些用例,并且您至少需要在添加新分区时在外部配置单元 table 上执行 "MSCK REPAIR"。