我有一些基于case class
进行处理和建模的数据,并且这些类中也可以包含其他case class
,因此最终表包含复杂的数据struct
,array
。使用案例类,我使用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>'。选择列表中仅允许标量类型。
是否有任何方法可以访问此视图,或以其他方式创建该视图以使其起作用?