|
本帖最后由 Zeng 于 2015-4-23 00:46 编辑
最近在AWS上使用Hive 0.13.1版本,在使用Parquet数据格式时,由于故障Hive-6914的问题,map字段不支持嵌套的map,这给某些实现带来麻烦。经过调查发现,该故障已经在最新版本1.1.0中解决。但是,目前AWS上的Hive最新版本是0.13.1,我们需要整合Hive-6914的patch,整合的基本过程如下(仅供参考):
- git clone https://github.com/apache/hive.git
- cd hive/
- # 切换到0.13.1分支,这个分支的代码比较旧,造成打patch时存在问题
- git checkout -b branch-0.13 origin/branch-0.13
- # 下载故障最新的patch,由于故障解决时基于的源文件不一致,
- # 会存在patch失败的问题,需要参考branch-0.14源文件
- git apply -v HIVE-6914.4.patch
- git apply -v HIVE-8359.5.patch
- git apply -v HIVE-8909.6.patch
- # 编译源文件
- mvn clean package -Phadoop-2,dist -DskipTests
- # 从AWS Hive集群下载hive-exec-0.13.1-amzn-2.jar,仅替换更新编译过的class文件,
- # 然后重新打包,然后上传替换jar文件
- # AWS Hive 0.13.1存在较旧的build,文件名为hive-exec-0.13.1-amzn-1.jar,注意检查
- jar cvf hive-exec-0.13.1-amzn-2.jar *
复制代码 另外,在用最新Hive版本1.1.0读取打好patch后生成的Parquet文件时,没有问题,但读取打patch前的文件存在问题,根源在于NanoTime.class,之前使用默认的大字节序(BIG-ENDIAN),最新版本改为小字节序(LITTLE_ENDIAN)。这个问题也会影响原始Hive版本,即0.13.1前后的版本。
|
|