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;"12345678910

hplsql -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存储过程相关推荐

  1. hive sql 怎么实现循环_Hive存储过程实现-hpsql

    1. 什么是hpsql 目前版本的hive中没有提供类似存储过程的功能,使用Hive做数据开发时候,一般是将一段一段的HQL语句封装在Shell或者其他脚本中,然后以命令行 的方式调用,完成一个业务或 ...

  2. hive sql 实现 时间循环

    需求描述: 传入一个开始时间,start_dt,一个结束时间,start_end,使其能够将开始时间到结束时间之间所有的时间 都遍历出来. 实现效果: hive sql 实现: –根据开始时间和结束时 ...

  3. hivesql修改字段类型_Hive 数据类型 + Hive sql

    Hive 数据类型 + Hive sql 基本类型 整型 int tinyint (byte) smallint(short) bigint(long) 浮点型 float double 布尔 boo ...

  4. Hive SQL的编译过程

    Hive是基于Hadoop的一个数据仓库系统,在各大公司都有广泛的应用.美团数据仓库也是基于Hive搭建,每天执行近万次的Hive ETL计算流程,负责每天数百GB的数据存储和分析.Hive的稳定性和 ...

  5. 易语言 存储过程 mysql_在易语言中调用MS SQL SERVER数据库存储过程(Transact-SQL)方法总结...

    作者:liigo 日期:2010/8/25 Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接 ...

  6. 搜狐 Hive SQL 血缘关系解析与应用

    1. 研究背景 随着企业信息化和业务的发展,数据资产日益庞大,数据仓库构建越来越复杂,在数仓构建的过程中,常遇到数据溯源困难,数据模型修改导致业务分析困难等难题,此类问题主要是由于数据血缘分析不足造成 ...

  7. Oracle在Pl/sql中的存储过程----zhoudianzhang

    Oracle 存储过程 目录 Oracle 存储过程... 1 Oracle存储过程基础知识... 1 Oracle存储过程的基本语法... 2 关于Oracle存储过程的若干问题备忘... 4 1. ...

  8. oracle 数据库循环查询语句怎么写,sql循环查询(sql语句循环查询详解)

    sql循环查询(sql语句循环查询详解) 2020-07-24 11:15:51 共10个回答 select*fromawheret_idin('3','4');select*fromawheret_ ...

  9. 【美团技术博客】Hive SQL的编译过程

    转载自:http://tech.meituan.com/hive-sql-to-mapreduce.html Hive SQL的编译过程 木叶丸2014-02-12 17:30 Hive是基于Hado ...

最新文章

  1. html基础实验的实验原理,html网页设计实验报告.doc
  2. 数据结构和算法系列5 七大排序之冒泡排序和快速排序
  3. String类中常用的方法
  4. QT的QScrollArea类的使用
  5. 【BZOJ3772】精神污染
  6. zabbix中php信息缺失之后的安装
  7. 微软发布了开发社区采用.NET Standard的最新信息
  8. Codeforces Round #660 (Div. 2)
  9. java在创建对象时必须_Java中5种创建对象的方式
  10. Unity界面插件NGUI基础教程
  11. Linux驱动模型解析bus之platform bus
  12. 对于计算机专业英语的问题,计算机专业英语的问题
  13. HTML基础 --- HTML基础
  14. com.android.packageinstaller,Android PackageInstaller 安装和卸载
  15. Labwindows/CVI 编写CAN通讯的上位机
  16. Radon变换及其Matlab代码实现
  17. 计算机科学与技术专业自我小结,最新计算机科学与技术专业毕业自我个人小结优秀范文原创...
  18. 2020-2021追番报告
  19. 贪心算法——1225:金银岛
  20. 小学四年级上册中的计算机,小学四年级信息技术上册教案

热门文章

  1. python调用hive与java调用区别_Python操作Hive的两种方法总结
  2. linux下运行hadoop,Linux环境下hadoop运行平台的搭建
  3. if break语句_8、嵌套if语句、switch语句
  4. java http请求
  5. 微型计算机内存为8m,通常说一台微机的内存容量为8M,指的是_______。
  6. java hql多条件查询_Hibernate结合JPA编写通用泛型多条件查询
  7. 系统调研450篇文献,微软亚洲研究院推出超详尽语音合成综述
  8. 变分推断(Variational Inference)最新进展简述
  9. 免费 | 从通识到核心—自然语言处理专题公开课
  10. HIN2Vec:异质信息网络中的表示学习 | PaperDaily #18