一、簡要介紹
目前版本的Hive中沒有提供類似存儲過程的功能,使用Hive做數據開發時候,一般是將一段一段的HQL語句封裝在Shell或者其他腳本中,然后以命令行的方式調用,完成一個業務或者一張報表的統計分析。好消息是,現在已經有了Hive存儲過程的解決方案(HPL/SQL –Procedural SQL on Hadoop),並且在未來的Hive的版本(2.0)中,會將該模塊集成進來。該解決方案不僅支持Hive,還支持在SparkSQL,其他NoSQL,甚至是RDBMS中使用類似於Oracle PL/SQL的功能,這將極大的方便數據開發者的工作,Hive中很多之前比較難實現的功能,現在可以很方便的實現,比如自定義變量、基於一個結果集的游標、循環等等。
二、安裝包下載地址
從http://www.hplsql.org/download下載最新版本HPL/SQL 0.3.11安裝包。
三、安裝配置
#tar -zxvf hplsql-0.3.31.tar.gz -C /home/hadoop/bigdataApp #cd /home/hadoop/bigdataApp/hplsql-0.3.31 #修改hplsql啟動腳本 vim hplsql #根據自己的機器實際的安裝情況配置如下:(我的配置如下) export "HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_HOME/hadoop/*" export "HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_HOME/lib/*" export "HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_HOME/etc/hadoop" export "HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_HOME/share/hadoop/mapreduce/*" export "HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_HOME/share/hadoop/mapreduce/lib/*" export "HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_HOME/share/hadoop/hdfs/*" export "HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_HOME/share/hadoop/hdfs/lib/*" export "HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_HOME/share/hadoop/yarn/*" export "HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_HOME/share/hadoop/yarn/lib/*" export "HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*" export "HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/conf" export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib/native" SCRIPTPATH=${0%/*} java -cp $SCRIPTPATH:$HADOOP_CLASSPATH:$SCRIPTPATH/hplsql-0.3.31.jar:$SCRIPTPATH/antlr-runtime-4.5.jar $HADOOP_OPTS org.apache.hive.hplsql.Hplsql "$@" #配置環境變量,hplsqlq的運行依賴於自己的兩個jar包,所以要把jar配置到hadoop_classpath下,也就是在現有的環境變量配置文件下添加如下配置:(我的配置如下) #vim ~/.bash_profile #set for hplsql HPLSQL_HOME=/home/hadoop/bigdataApp/hplsql-0.3.31 export HPLSQL_HOME export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HPLSQL_HOME/antlr-runtime-4.5.jar:$HPLSQL_HOME/hplsql-0.3.31.jar #source ~/.bash_profile #修改配置文件,主要修改hive-site.xml ,hplsql-site.xml 這兩個文件 cd $HIVE_HOME/conf vim hive-site.xml #添加如下內容 <property> <name>hive.server2.thrift.bind.host</name> <value>172.17.101.12</value> </property> <property> <name>hive.server2.thrift.port</name> <value>10000</value> </property> <property> <name>hive.metastore.schema.verification</name> <value>true</value> </property> # cd $HPLSQL_HOME #vim hplsql-site.xml #修改如下內容 <property> <name>hplsql.conn.default</name> <value>hive2conn</value> <description>The default connection profile</description> </property> <property> <name>hplsql.conn.hiveconn</name> <value>org.apache.hive.jdbc.HiveDriver;jdbc:hive2://172.17.101.12:1000</value> <description>HiveServer2 JDBC connection (embedded mode)</description> </property>
#創建連接到HIVE_HOME/bin
#ln -s /home/hadoop/bigdataApp/hplsql-0.3.31/hplsql /home/hadoop/hive-1.1.0-cdh5.5.2/bin/hplsql
#啟動hiveServer2
#$HIVE_HOME/bin/hiveserver2 &
#測試是否安裝成功
# cd $HPLSQL_HOME
#./hplsql -e "CURRENT_DATE + 1"
#./hplsql -e "FOR i IN 1 .. 10 LOOP PRINT i; END LOOP;"
#在測試過程中我出現如下問題
Error: Could not find or load main class org.apache.hive.hplsql.Hplsql --這是由於配置的hplsql的兩個依賴jar包配置有問題,以上安裝已經是經驗證后的正確安裝步驟,完全可以解決該問題了
最后預祝你安裝成功,每天學習一點點,日積月累,相信你會發生質的改變,在學的道路上,貴在堅持。。。。。。學習我一直在路上,終生只做一枚學生。。。。
參考文章:http://lxw1234.com/archives/2015/09/492.htm