在Hive用csv文件导入uniontype数据至表test_serializer后,使用select * from test_serializer发生错误
Error: Unrecognized column type: UNIONTYPE (state=,code=0)
Hive 版本: 2.3.9
经查,这是一个Hive jdbc在3.0.0版已解决的bug : HIVE-17259
我想试试在不升级版本的情况下解决该bug,设想是在2.3.9版的HIVE JDBC源代码中使用3.0.0版的bug修复代码,即做如下修改:
1. 在apache网站上找到对应版本的hive jdbc源代码并下载
Apache Downloads
2. 找到JdbcColumn.java并修改
新增两行代码如下:
} else if ("uniontype".equalsIgnoreCase(type)) {
return Type.UNION_TYPE;
3. 打包生成新的jdbc jar文件并复制到Hive Server
在cmd内导航到jdbc目录下,使用mvn package命令打包
打包后在jdbc目录下的target目录下找到hive-jdbc-2.3.9-standalone.jar及hive-jdbc-2.3.9.jar,分别复制到{$HIVE_HOME}/jdbc及{$HIVE_HOME}/lib目录,重启hiveserver2即可:
修复后的执行情况: