【发布时间】:2017-03-16 16:55:35
【问题描述】:
我有一个表,其中有一个结构 - 假设:
create external table table1 (
a int,
b STRUCT <c:double,d:double>,
e string
)
我在这张桌子上执行选择并得到类似 -
1100 {"c":12.3,"d":45.6} 字符串
但是当我将此数据插入另一个表时 -
create external table table2 (
a string,
b string,
c string
)
insert overwrite table table2
select a,b,c
from table1;
我得到以下奇怪的行为,表明 hive 中结构和字符串之间的转换没有按预期工作
select * from table2;
结果-
1100 12.345.6 长度
结果是结构中值的一种奇怪的串联,在处理更复杂的结构时会发生更奇怪的事情
有没有办法阻止这种自动转换?让 hive 在这种情况下抛出错误?
有没有一种干净的方法可以改变这种自动转换以不同的方式工作?
【问题讨论】: