在Hue中创建一个Oozie工作流
準備
建表
假設在mysql中有一個用戶信息表user,包含id,name,address三個字段。其中address字段存在字符串null。
在hive創建對應的表:
ods_user - 原始用戶信息緩存表
CREATE TABLE IF NOT EXISTS ods.ods_user
(id STRING COMMENT '用戶ID',
name STRING COMMENT '用戶名',
address STRING COMMENT '地址')
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
STORED AS TEXTFILE;
1
2
3
4
5
6
7
dwd_user - 原始用戶信息明細表
CREATE TABLE IF NOT EXISTS dwd.dwd_user
(id STRING COMMENT '用戶ID',
name STRING COMMENT '用戶名',
address STRING COMMENT '地址')
STORED AS PARQUET;
1
2
3
4
5
dw_user - 經過清洗轉換的用戶信息明細表
CREATE TABLE IF NOT EXISTS dw.dw_user
(id STRING COMMENT '用戶ID',
name STRING COMMENT '用戶名',
address STRING COMMENT '地址')
STORED AS PARQUET;
1
2
3
4
5
數據ETL模擬
為了實現工作流,模擬一個ETL邏輯。
1、使用Sqoop從業務數據庫抽取user數據存入ods_user表。
2、查詢ods_user表的數據存入dwd_user表。
3、查詢dwd_user表中的數據,將address字段中的字符串null轉化成NULL,存入dw_user表。
準備工作流任務
按照上述模擬的ETL邏輯,創建相應的任務命令。
任務一
創建mysql2hive.sh文件,寫入如下內容:(請替換成真實的連接信息)
sqoop-import \
? -Dorg.apache.sqoop.splitter.allow_text_splitter=true \
? --connect jdbc:mysql://<host>:<port>/<db> \
? --username <username> \
? --password <password> \
? --table user \
? --fields-terminated-by '\001' \
? --delete-target-dir \
? --hive-import \
? --hive-drop-import-delims \
? --hive-table ods.ods_user \
? --hive-overwrite \
? --null-string '\\N' \
? --null-non-string '\\N'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
任務二
創建ods2dwd.sql文件,寫入如下內容:
INSERT OVERWRITE TABLE dwd.dwd_user
SELECT *
FROM ods.ods_user;
1
2
3
任務三
創建dwd2dw.sql文件,寫入如下內容:
INSERT OVERWRITE TABLE dw.dw_user
SELECT
? id,
? name,
? CASE address
? ? WHEN 'null'
? ? THEN NULL
? ? ELSE address
? END
FROM dwd.dwd_user;
1
2
3
4
5
6
7
8
9
10
上傳到hdfs
用戶是bigdata,所以將上述創建的三個文件上傳到hdfs的/user/bigdata/目錄下。
組建工作流
工作流創建頁面
進入工作流創建頁面
頁面說明
添加工作流任務
添加任務一
選擇Shell Action
選擇執行文件
任務配置,由于集群啟用了Kerberos,所以需要配置憑據,任務才能執行成功
如果勾選hive2不管用,可以勾選hcat,總有一個管用的。
添加任務二
選擇HiveServer2 Action
選擇執行文件
添加任務三
選擇HiveServer2 Action
選擇執行文件
保存工作流
編輯工作流名稱和各個任務的名稱,然后點擊保存按鈕,保存工作流。
調度工作流
保存工作流后,點擊計劃,編輯工作流調度計劃
命名調度計劃和添加描述,選擇要調度的工作流,選擇調度策略之后,保存調度計劃。
點擊保存按鈕之后,出現提交按鈕,點擊提交,啟動調度計劃。
至此,完成在Hue中創建Oozie工作流并調度。
?
總結
以上是生活随笔為你收集整理的在Hue中创建一个Oozie工作流的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oozie 任务调度
- 下一篇: 针对这一行业痛点,创新工场投资的潞晨科技