最近在Hadoop集群中要添加一些Hive表来解析Json。
因为Json的内容太长,选择外部表创建语句格式如下:
create external table if not exists TABLENAME
(
字段A string,
字段B string,
字段C struct<
字段D:string,字段E:struct<。。。。省略。。。>
>
)。。。省略
建表成功后,对建好的表进行操作时,在hive shell中发现没有办法操作,无论是desc还是drop 都报错,提示在字段末尾意外中断了。
本来以为是JsonSerDe调用函数时,字段C的TypeString字符串的长度超出了String的长度限制,这样就没办法了。
后来找到了Hive 元数据库的hive.COLUMNS_V2的TYPE_NAME长度为varchar(4000)导致了字符串中断。
修正方法:
alter table COLUMNS_V2 modify column TYPE_NAME varchar(20000);
更改了最大长度,表可以正常使用了。