HiveSQL工程化呼叫方案

2021-06-26 09:27:42 字數 2458 閱讀 7211

通常hive etl工程師,寫好hql語句後,是乙個檔案,如何把檔案組織起來整體執行呢?

這時就需要乙個工具來工程化地執行hql檔案。

根據etl的特性,想了下目前需要提供的功能列舉如下:

1.傳參

2.寫**注釋

3.自定義hiveconf(set ***=***)

hive提供的service比較多,具體可以通過hive --help(注意不是hive -h),這裡主要針對cli(也是default service)進行,

我們使用hive --service cli -h來看看以上功能是否可以得到解決

[dcli@gd6g12s146-hadoop-namenode2 sql]$ hive --service cli -h

missing argument for option: h

usage: hive

commands. e.g. -d a=b or --define a=b

--database specify the database to use

-e sql from command line

-f sql from files

-h,--help print help information

-h connecting to hive server on remote host

--hiveconf use value for given property

-i initialization sql file

-p connecting to hive server on port number

-s,--silent silent mode in interactive shell

-v,--verbose verbose mode (echo executed sql to the console)

嘗試使用hive自帶功能,實現以上需求

一、測試自定義傳參有效

[dcli@gd6g12s146-hadoop-namenode2 sql]$ hive -f test.sql --hivevar num='2'

slf4j: found binding in [jar:file:/home/vipshop/platform/hive-0.11.0-build/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/staticloggerbinder.class]

slf4j: see for an explanation.

ok_c0

2time taken: 6.141 seconds, fetched: 1 row(s)

[dcli@gd6g12s146-hadoop-namenode2 sql]$ cat test.sql

select '$' from default.dual;

二、測試自定義設定有效

[dcli@gd6g12s146-hadoop-namenode2 sql]$ hive -f test.sql --hivevar num='2'

slf4j: found binding in [jar:file:/home/vipshop/platform/hive-0.11.0-build/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/staticloggerbinder.class]

slf4j: see for an explanation.ok2

time taken: 8.25 seconds, fetched: 1 row(s)

[dcli@gd6g12s146-hadoop-namenode2 sql]$ cat test.sql

set hive.cli.print.header=false;

select '$' from default.dual;

三、測試注釋 設定有效,支援'--'注釋方法,但是不支援'#'(如果不是**座,似乎也就夠了。。。)

[dcli@gd6g12s146-hadoop-namenode2 sql]$ hive -f test.sql --hivevar num='2'

slf4j: see for an explanation.

ok_c0

2time taken: 4.639 seconds, fetched: 1 row(s)

[dcli@gd6g12s146-hadoop-namenode2 sql]$ cat test.sql

--author: tony.li

--desc: test hive service(cli) conf

--select '$' from default.dual;

如上,我們就可以實現對hql指令碼的工程化執行了(當然外面可以包裝乙個指令碼,實現對常用引數的配置),然後配合排程系統進行排程執行。

前端工程化

為什麼出現了前端工程化?09年之前,我們學習的css,div,js只是對頁面設計進行乙個打輔助的功能,當時只能勉強的成為頁面設計師,為什麼會出現前端工程師 1.突然間前端的需求逐漸增多,使用者對介面的要求越來越高,前端範疇越來越大。2.前後端總是保持一致才能進行開發,不能分開開發,提出前端工程化,也...

前端工程化

一 什麼是前端工程化 根據業務特點,將前端開發流程規範化 標準化 包括開發流程 技術選型,規範,構建發布等用於提公升前端工程師開發效率和 質量,提高產品的質量。實現前端工程化的目的 就是通過流程規範 自動化工具來提公升前端的開發效率 效能 質量 多人協作能力以及開發體驗。前端工程化體系分為 元件化 ...

前端工程化

老大考慮到團隊成員學習的曲線,最終選擇thunk 為了更方便團隊人員使用,封裝直接的thunk,和cobinereducer 1 專案分為四大塊,服務治理,資源治理,診斷除錯,分析管理 幾十個元件,不可能將所有的狀態解除安裝乙個reducer裡面來管理 不利於維護 然後因為封裝了元件thunk所以要...