HIVE打补丁 编译Hive

    HIVE使用过程中发现对中文的支持很糟,通过JDBC连接HIVE,查询到的数据中,如果包含了中文字符(不管是GB2312还是UTF-8)一律显示乱码,识别不出来,转码也没有办法解决,因为在jdbc驱动里获取数据时,已经将原始的二进制改变了,数据的始终是错误的字符串。

   在网上查了下,有人提出了HIVE 2137的补丁(https://issues.apache.org/jira/browse/HIVE-2137),在jdbc的源码中,需做一下修改

 jdbc/src/java/org/apache/hadoop/hive/jdbc/HiveQueryResultSet.java:
 StructObjectInspector soi = (StructObjectInspector) serde.getObjectInspector();
       List<? extends StructField> fieldRefs = soi.getAllStructFieldRefs();
-      Object data = serde.deserialize(new BytesWritable(rowStr.getBytes()));
+      Object data = serde.deserialize(new BytesWritable(rowStr.getBytes("UTF-8")));

其中用“UTF-8”来编码字符串。

     为解决这个问题,不得不重新编译HIVE。。。。。

     步骤1:  http://mirror.bjtu.edu.cn/apache/hive/hive-0.7.1/ 下载hive-0.7.1.tar.gz ,解压到/home/hadoop/hive/

     步骤2:下载ant 从http://ant.apache.org/  解压到 /user/local/  ,ln -s apache-ant-1.7.1 ant

     步骤3:下载ant 从http://www.apache.org/dist/ant/ivy/  解压到 /user/local/,ln -s apache-ivy-2.1.0-rc2 ivy

     步骤4:修改 /etc/profile   增加两行: export PATH=/usr/local/ant/bin:$PATH      export IVY_HOME=/usr/local/ivy

    步骤5:修改build.properties文件中:否则原配置是facebook,被河蟹了,只能用人人的镜像
    hadoop.version=0.20.2
    hadoop.mirror=http://labs.renren.com/apache-mirror/
    hadoop.security.url=http://people.apache.org/~todd/snapshot-for-hive-build/hadoop-0.20.3-CDH3-SNAPSHOT.tar.gz
    hadoop.security.version=0.20.3-CDH3-SNAPSHOT

    步骤6: 开始编译  : ant  package

     有可能出现的问题: 目录权限不够,或者下载组件失败。。。。反正哪里出错就处理哪里问题。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值