大数据

标题: Hive Parquet格式不支持嵌套map [打印本页]

作者: Zeng    时间: 2015-4-22 11:49
标题: Hive Parquet格式不支持嵌套map
本帖最后由 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,整合的基本过程如下(仅供参考):
  1. git clone https://github.com/apache/hive.git
  2. cd hive/
  3. # 切换到0.13.1分支,这个分支的代码比较旧,造成打patch时存在问题
  4. git checkout -b branch-0.13 origin/branch-0.13
  5. # 下载故障最新的patch,由于故障解决时基于的源文件不一致,
  6. # 会存在patch失败的问题,需要参考branch-0.14源文件
  7. git apply -v HIVE-6914.4.patch
  8. git apply -v HIVE-8359.5.patch
  9. git apply -v HIVE-8909.6.patch
  10. # 编译源文件
  11. mvn clean package -Phadoop-2,dist -DskipTests
  12. # 从AWS Hive集群下载hive-exec-0.13.1-amzn-2.jar,仅替换更新编译过的class文件,
  13. # 然后重新打包,然后上传替换jar文件
  14. # AWS Hive 0.13.1存在较旧的build,文件名为hive-exec-0.13.1-amzn-1.jar,注意检查
  15. 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前后的版本。





欢迎光临 大数据 (http://bigbase.cn/) Powered by Discuz! X3.2