HPL/SQL系列:安装

一. 前言

相信很多公司遇到跟我们类似的问题:要将Oracle的应用迁移到Hadoop平台中,遭遇到大量的Oracle存储过程需要改造。最便捷的解决方式就是使用HPL/SQL,其大部分语法兼容Oracle。可惜,这只是看上去很美好,在经过是各种测试之后发现HPL/SQL的Bug实在太多,太不成熟,应用在生产上需要规避很多的坑。我把我们在实际使用过程中遇到的HPL/SQL各种坑记录下来,提供大家参考。

Hadoop环境:CDH 5.14.2

HPL/SQL版本:0.3.31


二. HPL/SQL安装

HPL/SQL的安装相对比较简单,按照官方文档操作即可。

1. 去官网下载最新的版本

http://www.hplsql.org/

2. 系统需求

Java 1.6 or higher

Hadoop 1.x. and 2.x

3. 安装

1)解压

[root@node1 install]# mkdir /hadoop/hplsql

[root@node1 install]# tar -zxvf hplsql-0.3.31.tar.gz-C /hadoop/hplsql/

[root@node1 install]# cd /hadoop/hplsql/

创建一个Link以实现后续版本升级的方便性:

[root@node1 hplsql]# ln -s hplsql-0.3.31 hplsql

2)修改配置

[root@node1 hplsql]# chmod +x hplsql

针对CDH版本,编辑hplsql,删除所有包含“export "HADOOP_CLASSPATH=..."”的行,增加一行:

export"HADOOP_CLASSPATH=/hadoop/cloudera/parcels/CDH/jars/*"

3)测试是否可以正常执行

[root@node1 hplsql]# ./hplsql --version

HPL/SQL 0.3.31

4)将HPLSQL添加到PATH中

[root@node1 ~]# vi /etc/profile

PATH=/hadoop/hplsql/hplsql:$PATH

[root@node1 ~]#source /etc/profile

5)修改hplsql-site.xml

定义YARN job queue和HiveServer2的地址(修改蓝色字体的部分):

 hplsql.conn.init.hive2conn

 

     set mapred.job.queue.name=default;

     sethive.execution.engine=mr;

     use default;

 

  Statements for executeafter connection to the database

……..

 hplsql.conn.hive2conn

  org.apache.hive.jdbc.HiveDriver;jdbc:hive2://node2:10000;admin;hive

  HiveServer2 JDBCconnection



三. HPL/SQL的运行

简单的HPL/SQL函数测试:

[root@node1 ~]# hplsql -e "CURRENT_DATE+1"

HPL/SQL执行Hive SQL的测试:

[root@node1 ~]# hplsql -e "select count(1) from test01"

如果都执行成功,恭喜你,HPL/SQL安装成功!


四. 安装中的坑

问题:

如果在部署了HiveServer2的节点上安装HPL/SQL,运行 "CURRENT_DATE+1"是OK的,但是运行 "select count(1) from test01"这种SQL语句,会报错:

Exception in thread "main"java.lang.IncompatibleClassChangeError: classorg.apache.hive.service.cli.thrift.TCLIService$Client has interfaceorg.apache.thrift.TServiceClient as super class

解决方法:

根据hplsql文件里面的设置:export"HADOOP_CLASSPATH=/hadoop/cloudera/parcels/CDH/jars/*"

在对应目录中将“libthrift-0.5.0.jar,libthrift-0.9.0.jar,libthrift-0.9.3.jar”三个包移走,问题就可以解决。


备注:

有兴趣一起讨论HPL/SQL和Hive技术的,可以加入QQ群:689163852


你可能感兴趣的:(HPLSQL,Hive,Hive存储过程)