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;"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存储过程相关推荐
- hive sql 怎么实现循环_Hive存储过程实现-hpsql
1. 什么是hpsql 目前版本的hive中没有提供类似存储过程的功能,使用Hive做数据开发时候,一般是将一段一段的HQL语句封装在Shell或者其他脚本中,然后以命令行 的方式调用,完成一个业务或 ...
- hive sql 实现 时间循环
需求描述: 传入一个开始时间,start_dt,一个结束时间,start_end,使其能够将开始时间到结束时间之间所有的时间 都遍历出来. 实现效果: hive sql 实现: –根据开始时间和结束时 ...
- hivesql修改字段类型_Hive 数据类型 + Hive sql
Hive 数据类型 + Hive sql 基本类型 整型 int tinyint (byte) smallint(short) bigint(long) 浮点型 float double 布尔 boo ...
- Hive SQL的编译过程
Hive是基于Hadoop的一个数据仓库系统,在各大公司都有广泛的应用.美团数据仓库也是基于Hive搭建,每天执行近万次的Hive ETL计算流程,负责每天数百GB的数据存储和分析.Hive的稳定性和 ...
- 易语言 存储过程 mysql_在易语言中调用MS SQL SERVER数据库存储过程(Transact-SQL)方法总结...
作者:liigo 日期:2010/8/25 Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接 ...
- 搜狐 Hive SQL 血缘关系解析与应用
1. 研究背景 随着企业信息化和业务的发展,数据资产日益庞大,数据仓库构建越来越复杂,在数仓构建的过程中,常遇到数据溯源困难,数据模型修改导致业务分析困难等难题,此类问题主要是由于数据血缘分析不足造成 ...
- Oracle在Pl/sql中的存储过程----zhoudianzhang
Oracle 存储过程 目录 Oracle 存储过程... 1 Oracle存储过程基础知识... 1 Oracle存储过程的基本语法... 2 关于Oracle存储过程的若干问题备忘... 4 1. ...
- oracle 数据库循环查询语句怎么写,sql循环查询(sql语句循环查询详解)
sql循环查询(sql语句循环查询详解) 2020-07-24 11:15:51 共10个回答 select*fromawheret_idin('3','4');select*fromawheret_ ...
- 【美团技术博客】Hive SQL的编译过程
转载自:http://tech.meituan.com/hive-sql-to-mapreduce.html Hive SQL的编译过程 木叶丸2014-02-12 17:30 Hive是基于Hado ...
最新文章
- html基础实验的实验原理,html网页设计实验报告.doc
- 数据结构和算法系列5 七大排序之冒泡排序和快速排序
- String类中常用的方法
- QT的QScrollArea类的使用
- 【BZOJ3772】精神污染
- zabbix中php信息缺失之后的安装
- 微软发布了开发社区采用.NET Standard的最新信息
- Codeforces Round #660 (Div. 2)
- java在创建对象时必须_Java中5种创建对象的方式
- Unity界面插件NGUI基础教程
- Linux驱动模型解析bus之platform bus
- 对于计算机专业英语的问题,计算机专业英语的问题
- HTML基础 --- HTML基础
- com.android.packageinstaller,Android PackageInstaller 安装和卸载
- Labwindows/CVI 编写CAN通讯的上位机
- Radon变换及其Matlab代码实现
- 计算机科学与技术专业自我小结,最新计算机科学与技术专业毕业自我个人小结优秀范文原创...
- 2020-2021追番报告
- 贪心算法——1225:金银岛
- 小学四年级上册中的计算机,小学四年级信息技术上册教案
热门文章
- python调用hive与java调用区别_Python操作Hive的两种方法总结
- linux下运行hadoop,Linux环境下hadoop运行平台的搭建
- if break语句_8、嵌套if语句、switch语句
- java http请求
- 微型计算机内存为8m,通常说一台微机的内存容量为8M,指的是_______。
- java hql多条件查询_Hibernate结合JPA编写通用泛型多条件查询
- 系统调研450篇文献,微软亚洲研究院推出超详尽语音合成综述
- 变分推断(Variational Inference)最新进展简述
- 免费 | 从通识到核心—自然语言处理专题公开课
- HIN2Vec:异质信息网络中的表示学习 | PaperDaily #18