如何使用Impala读取包含复杂类型的Hive视图?

时间:2019-03-26 17:33:50

标签: apache-spark hive impala

我有一些基于case class进行处理和建模的数据,并且这些类中也可以包含其他case class,因此最终表包含复杂的数据structarray。使用案例类,我使用dataframe.saveAsTextFile(path)将数据保存在配置单元中。

此数据有时会更改或需要具有不同的模型,因此对于每次迭代,我在表名中都使用后缀(some_data_v01,some_data_v03等)。

我也有使用Impala在这些表上按计划运行的查询,因此为了不每次我保存一个新表时都修改查询,我想使用一个视图,该视图在每次更改时都会更新模型。

问题在于,由于表中数据的复杂性质(嵌套的复杂类型),我无法使用Impala创建view。除了要扩展复杂类型的大量工作之外,我还希望保留这些类型(很多嵌套级别,加入数组时重复数据)。

一种解决方案是像这样使用Hive创建视图

create view some_data as select * from some_data_v01;

但是,如果我要这样做,当我想使用Impala中的表格时,

select * from some_data;

甚至简单的东西,例如

select some_value_not_nested, struct_type.some_int, struct_type.some_other_int from some_data;

错误如下:

  

AnalysisException:选择列表中的Expr'some_data_v01.struct_type'返回复杂类型   'STRUCT ,last_int:INT>'。选择列表中仅允许标量类型。

是否有任何方法可以访问此视图,或以其他方式创建该视图以使其起作用?

0 个答案:

没有答案