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
如下的例子實現的功能是:
第一部分創建了一個自定義函數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;
閱讀更多 熱忱先生 的文章