hive sql循环_hive存储过程
1、hive存儲過程簡介
1.x版本的hive中沒有提供類似存儲過程的功能,使用Hive做數據開發時候,一般是將一段一段的HQL語句封裝在Shell或者其他腳本中,然后以命令行的方式調用,完成一個業務或者一張報表的統計分析。好消息是,現在已經有了Hive存儲過程的解決方案(HPL/SQL –Procedural SQL on hadoop),并且在未來的Hive的版本(2.0)中,會將該模塊集成進來。該解決方案不僅支持Hive,還支持在SparkSQL,其他NoSQL,甚至是RDBMS中使用類似于Oracle PL/SQL的功能,這將極大的方便數據開發者的工作,Hive中很多之前比較難實現的功能,現在可以很方便的實現,比如自定義變量、基于一個結果集的游標、循環等等。
2、hplsql安裝和存儲過程案例
下載:
官網下載地址:自行下載哈,不附鏈接了
0.3.31版本下載地址:自行下載哈,不附鏈接了
安裝hplsql:
[root@hadoop01 home]# tar -zxvf /home/hplsql-0.3.31.tar.gz -C /usr/local/配置hplsql:
vi ./hplsql內容如下:
#!/bin/bashexport "HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_HOME/lib/*"export "HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_CONF_DIR/"???????????????????????????????????????????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:$HADOOP_HOME/share/hadoop/common/*"export "HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_HOME/share/hadoop/common/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 "$@"配置hive2的服務:
vi ./conf/hive-site.xml追加內容如下:
??????hive.server2.thrift.bind.host????hadoop01????????hive.server2.thrift.port????10000??重啟hiveserver2:
nohup hive --service hiveserver2 > hiveserver2.log 2>&1 &配置HPL/SQL與Hive的連接:
vi ./hplsql-site.xml使用hplsql -e執行命令:
[root@hadoop01 hplsql-0.3.31]# ./hplsql -e "CURRENT_DATE + 1"2019-09-18[root@hadoop01 hplsql-0.3.31]# ./hplsql -e "for i in 1 .. 10 loop print i;end loop;"12345678910hplsql -f執行腳本:
測試表:
hive>select * from qf24.u5;
OK
7 yy
3 cc
2 bb
創建腳本hp.sql
create function hello(text string)returnS stringBEGINRETRUEN 'Hello,' || text || '!';END;FOR item IN(SELECT id,name FROM qf24.u5 limit 3)loop????????println item.id || '|' || item.name || '|' || hello(item.name);end loop;測試:
[root@hadoop01 hplsql-0.3.31]# ./hplsql -f /home/hivedata/hp.sql7|yy|Hello,yy!3|cc|Hello,cc!2|bb|Hello,bb!創建存儲過程的格式:
use database;create procedurebegin......end;調用存儲過程:
include path/sp namecall sp name;案例:
創建存儲過程:
use?qf24;create?procedure?select_u5()beginselect?*?from?qf24.u5;end;調用:
include 文件路徑 (在代碼文件中引入)
執行執行文件:
[root@hadoop01 hplsql-0.3.31]# ./hplsql -f /home/hivedata/ps.sql調用指定存儲過程或者方法:
[root@hadoop01 hplsql-0.3.31]# ./hplsql -f /home/hivedata/ps.sql -main select_u5總結
以上是生活随笔為你收集整理的hive sql循环_hive存储过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: unity热更新json_Unity热更
- 下一篇: 管能做暖气管道吗_这样的暖气管道施工,标