Hive中创建和调用存储过程及自定义函数

前面的文章《在Hive中实现存储过程–HQL/SQL》中介绍了如何使用HPL/SQL在Hive中实现存储过程,执行类似Oracle PL/SQL的功能。

一般的业务场景是数据开发人员开发好一个存储过程,然后周期性的调用,传入不同的参数即可。

本文继续介绍如何在Hive中利用HPL/SQL创建和调用存储过程。

使用下面的语句创建一个存储过程set_message,它接受一个STRING类型的IN参数,输出一个STRING类型的OUT参数。

 
  1. CREATE PROCEDURE set_message(IN name STRING, OUT result STRING)
  2. BEGIN
  3. SET result = 'Hello, ' || name || '!';
  4. END;

Oracle以及其他关系型数据库会将创建的存储过程保存到自身的元数据中,但HQL/SQL中并不是,而是保存在本地文件中。

将上面的语句保存到一个本地文件中,比如:/home/lxw1234/set_message.sql

在以后需要调用该存储过程的脚本的第一行,使用INCLUDE <procedure_file_name>引入存储过程的脚本文件/home/lxw1234/set_message.sql

注意:行尾没有分号。

比如,2.sql文件中的内容如下:

 
  1. INCLUDE /home/lxw1234/set_message.sql
  2. DECLARE str STRING;
  3. CALL set_message('lxw1234.com', str);
  4. PRINT str;

使用./hplsql -f 2.sql执行:

 
  1. [liuxiaowen@dev hplsql-0.3.11]$ ./hplsql -f 2.sql
  2. Open connection: jdbc:hive2://172.16.212.17:10000 (110 ms)
  3. Starting query
  4. Query executed successfully (48.90 sec)
  5. 1
  6. Hello, lxw1234.com!

如果在2.sql文件中没有使用INCLUDE引入存储过程文件,则返回结果为null。

HPL/SQL自定义函数的创建和调用方法同存储过程,这里不再累赘。

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值