SQL使得Hive和SparkSQL使用存儲過程

HQL/SQL使得Hive和SparkSQL也都可以使用存儲過程的功能,可以很方便的管理和開發SQL程序。

使用hplsql執行HPL/SQL語句

./hplsql -e "CURRENT_DATE + 1"

./hplsql -e "PRINT a || ', ' || b" -d a=Hello -d b=zhansan

./hplsql -e "FOR i IN 1 .. 10 LOOP PRINT i; END LOOP;"

使用hplsql可以創建自定義函數

hplsql使用遊標LOOP ... END LOOP

HQL/SQL使得Hive和SparkSQL使用存儲過程

如下的例子實現的功能是:

第一部分創建了一個自定義函數hello

傳入一個字符串,返回Hello,字符串!

第二部分使用FOR .. LOOP遊標.

從Hive的testdb.site_cates表中獲取10條記錄,

打印出兩個字段的內容,

並把cate字段傳遞給前面的函數hello,

打印返回的結果,用單豎線將結果進行拼接。

使用如下命令執行hql文件內容

文件為filename.sql

./hplsql -f filename.sql

執行完後可以再hive中使用如下命令查看數據:

hive> select * from liuxiaowen.testdb limit 10;

filename.sql文件的內容:

CREATE FUNCTION hello(text STRING)

RETURNS STRING

BEGIN

RETURN 'Hello, ' || text || '!';

END;

FOR item IN (

SELECT siteid,cate FROM liuxiaowen.lxw_site_cates limit 10

)

LOOP

PRINT item.siteid || '|' || item.cate || '|' || hello(item.cate);

END LOOP;


分享到:


相關文章: