目錄
需求背景
解決方案
實施方法
1.撰寫shell檔案
2.將sh檔案放到hdfs上
3.創建workflow
4.執行測驗
5.創建coordinate調度
6.執行coord
需求背景
根據業務情況,需要調度ETL資料清洗的hql陳述句
解決方案
通過大資料組件HUE+OOZIE調度shell腳本執行hive sql命令,方便管理,方便排錯,
實施方法
1.撰寫shell檔案
wf-etl-user.sh
#!/bin/bash
# hive目錄
hive=/usr/local/service/hive/bin/hive
# 如果是輸入的日期按照取輸入日期;如果沒輸入日期取當前時間的前一天
if [ -n "$1" ]; then
do_date=$1
else
do_date=$(date -d "-1 day" +%F)
fi
sql="use dd_database_bigdata;
INSERT OVERWRITE TABLE dwd_content_view_log
PARTITION(dt='$do_date')
SELECT
date_format('$do_date','yyyyMMdd') date_id,
date_time data_time,
biz_id,
biz_type,
behavior_type,
get_json_object(behavior_value,'$.seconds') behavior_value,
user_id,
longitude,
latitude,
ip,
request_ip,
app_version,
app_id,
device_id,
device_type,
network,
mobile_type,
os,
session_id,
trace_id,
parent_trace_id,
page_id,
sign,
token
FROM dwd_base_event_log_b
WHERE dt='$do_date' AND behavior_type in ('content_view','content_stop');"
echo "===開始清洗事件日期為 $do_date 的資料==="
$hive -e "$sql"
echo "===事件日期為 $do_date 的資料清洗完成==="
陳述句解釋:
shell檔案中定義一個變數,直接定義比如:jdbc_username=root,使用此引數:$jdbc_username
shell中前一天`date -d "-1 day" +%F`,當日`date +%F`
shell action需要傳參時,HUE上規定是使用$1,$2,$3這種方式,后面創建Schedule時會講到,
shell中定義的hive的bin路徑,是為了執行hive時呼叫hive程式:$hive -e 是在此目錄下執行hive陳述句,
2.將sh檔案放到hdfs上
/warehouse/dd/oozie/workspace/workspace-sqoop-hive2mysql-now/shell/sqoop-hive2mysql-now-shell.sh
3.創建workflow

4.執行測驗

程式執行可在job中查看執行情況

5.創建coordinate調度

from開始時間如果選擇了之前的時間,任務創建執行后,會先執行多個job彌補選擇的時間差,
比如:我們每時10分的任務,當前時間是12點15分,from選擇了12點0分,執行這個coordinate時,會立即執行一個job workflow,是執行的12點10分的任務,所以這個from我們只需要創建時默認當時的時間即可,
6.執行coord


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/356068.html
標籤:其他
