每次我试图在IMPALA中从HIVE中创建的表中选择DATE类型字段时,我得到AnalysisException:Unsupported type'DATE' .
有没有解决方法?
UPDATE 这是来自配置单元和impala查询的创建表模式的示例
Schema:
CREATE TABLE myschema.mytable
( day_dt
date, event
string)
分区( day_id
int)
存储为INPUTFORMAT'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
Impala query 从myschema.mytable b中选择b.day_dt;
2 回答
Impala没有
DATE
数据类型,而Hive有 . 当您从Impala访问它时,您将获得AnalysisException: Unsupported type 'DATE'
. 快速解决方法是在Hive中创建date
列的string
列,并以任何您想要的方式从Impala访问它 .如果您以字符串形式存储,则可能会创建一个新的外部配置单元表,该表指向与现有表相同的HDFS位置,但模式的day_dt的数据类型为STRING而不是DATE .
这是一个真正的解决方法,它可能只适合一些用例,并且每当添加新分区时,您至少需要在外部配置单元表上执行“MSCK REPAIR” .