微信搜索lxw1234bigdata | 邀请体验:数阅–数据管理、OLAP分析与可视化平台 | 赞助作者:赞助作者

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

Hive lxw1234@qq.com 31757℃ 0评论

关键字:Hive 存储过程

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

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

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

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

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

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

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

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

注意:行尾没有分号。

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

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

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

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

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

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

更多关于Hive中使用存储过程的文章,阅读《Hive存储过程系列文章》。

您可以关注 lxw的大数据田地 ,或者 加入邮件列表 ,随时接收博客更新的通知邮件。

如果觉得本博客对您有帮助,请 赞助作者

转载请注明:lxw的大数据田地 » Hive中创建和调用存储过程及自定义函数

喜欢 (25)
分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址