关键字: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中创建和调用存储过程及自定义函数