丝袜人妻一区二区三区_少妇福利无码视频_亚洲理论片在线观看_一级毛片国产A级片

當(dāng)前位置:首頁 > 攻略

【solo命令】計劃工具(ETL任務(wù)流)

1.區(qū)分ETL任務(wù)計劃工具和任務(wù)流計劃工具

Kettle是ETL工具Extract-Transform-Load(ETL)的縮寫,即數(shù)據(jù)提取、轉(zhuǎn)換和裝載過程。

Kettle中文名字叫水壺。MATT是該項目的主要程序員,他希望將各種數(shù)據(jù)放入一個壺中,并以指定的格式泄露出去。

所以他的重點是數(shù)據(jù)。

Oozie將作業(yè)的執(zhí)行順序指定為放置在從屬于控制的直接加速圖形(DAG)中的一系列操作(例如,Hadoop中的映射/Reduce操作、Pig操作等)

Oozie工作流有數(shù)據(jù)流,但重心在工作流的定義中。

兩者都有相關(guān)的功能和數(shù)據(jù)流動,但實際用途不同。

2.ETL任務(wù)調(diào)度程序

2.1Sqoop調(diào)度工具

2.1.1列出所有數(shù)據(jù)庫

查看幫助

Bin/sqoop help列出了所有Linux上的數(shù)據(jù)庫

bin/sq OOP list-databases-connect JDBC : MySQL ://localhost :3306-username root-password

bin/sq OOP list-databases-connect JDBC : MySQL ://192 . 168 . 22 . 3633603306-username root

bin/sq OOP list-tables-connect HDFS : MySQL ://localhost :3306/MySQL-username root-;

(1)確認(rèn)MySQL服務(wù)已正確啟動

通過檢查查詢控制端口和查詢過程,您可以通過兩種方式確認(rèn)MySQL是否處于啟動狀態(tài)。

方法1:端口查詢

$ netstat -tulpnMySQL監(jiān)視的TCP的3306端口,如果顯示3306,則證明MySQL服務(wù)正在運行

方法2:查詢過程

可以查看Mysql進(jìn)程

未指定導(dǎo)入Ps -ef | grep mysqld數(shù)據(jù)的目錄。默認(rèn)值為/user/root/表名

Bin/sqoop import \

-connect JDBC : MySQL ://192 . 168 . 77 . 137/zhjy \

- password 123456 \

- username root \

-tablezf _ jygz _ thjc \

-m1 \

-fields-terminated-by' \ t '

或者是

Bin/sqoop import \

-connect JDBC : MySQL ://192 . 168 . 77 . 137/zhjy \

- password 123456 \

- username root \

-tablezf _ jygz _ thjc \

-M5 \

- split-by ZF_BH _ BH(通常在設(shè)置-m1時使用)

-fields-terminated-by' \ t '原因:

如果表具有主鍵,則可以將m值設(shè)置為大于1的值。如果沒有主鍵,則只能將m值設(shè)置為1?;蛘?,如果希望m值大于1,則必須使用- split-by指定字段

如果設(shè)置為-m 1,則只有一個maptask執(zhí)行數(shù)據(jù)輸入。默認(rèn)情況下,4個maptask執(zhí)行輸入操作,但必須指定列作為拆分標(biāo)準(zhǔn)

將數(shù)據(jù)導(dǎo)入指定目錄

將表數(shù)據(jù)導(dǎo)入到HDFS中時,可以使用Sqoop導(dǎo)入程序指定大象目錄。使用-target-dir參數(shù)指定導(dǎo)出目標(biāo),使用-delete-target-dir參數(shù)檢查導(dǎo)出目錄是否存在,如果存在,則將其刪除

Bin/sqoop import \

-connect JDBC : MySQL ://192 . 168 . 77 . 137/zhjy \

- username root \

- password 123456 \

- delete-target-dir \ -如果目錄存在,則刪除該目錄

-tablezf _ jygz _ thjc \

-target-dir/user/zhjy \-指定存儲目錄

-m1 \

-fields-terminated-by' \ t '獲取查詢

Bin/sqoop import \

-connect JDBC : MySQL ://192 . 168 . 72 . 13:3306/company \

- username root \

-passwordroot \

-target-dir/user/company \

-delete-target-dir \

-num-mappers1 \

-fields-terminated-by' \ t' \

- query 'select n

ame,sex from staff where id <=1 and $CONDITIONS;'

提示:must contain '$CONDITIONS' in WHERE clause。

where id <=1 匹配條件

$CONDITIONS:傳遞作用。

如果 query 后使用的是雙引號,則 $CONDITIONS前必須加轉(zhuǎn)義符,防止 shell 識別為自己的變量。

--query時不能使用--table一起使用

需要指定--target-dir路徑

導(dǎo)入到hdfs指定目錄并指定要求

bin/sqoop import \ --connect jdbc:mysql://192.168.72.133:3306/company \ --username root \ --password root\ #提高數(shù)據(jù)庫到hadoop的傳輸速度 --direct --table staff \ --delete-target-dir \ #導(dǎo)入指定列,涉及到多列,用逗號分隔 --column id,sex \ --target-dir /user/company \ --num-mappers 1 \ #指定分隔符 --fields-terminated-by '\t' #指定導(dǎo)出存儲格式 --as-textfile #指定數(shù)據(jù)壓縮(壓縮,解壓縮方式) --compress --compression-codec org.a

數(shù)據(jù)導(dǎo)出儲存方式(數(shù)據(jù)存儲文件格式---( textfil parquet)--as-textfileImports data as plain text (default)--as-parquetfile Imports data to Parquet Files)

導(dǎo)入表數(shù)據(jù)子集到HDFS

bin/sqoop import \ --connect jdbc:mysql://172.16.43.67:3306/userdb \ --username root \ --password root \ --table emp_add \ --target-dir /sqoop/emp_add \ -m 1 \ --delete-target-dir \ --where "city = 'sec-bad'"

sqoop導(dǎo)入BLOB數(shù)據(jù)到Hive

對于CLOB,如xml文本,sqoop可以遷移到Hive表,對應(yīng)字段存儲為字符類型。
對于BLOB,如jpg圖片,sqoop無法直接遷移到Hive表,只能先遷移到HDFS路徑,然后再使用Hive命令加載到Hive表。遷移到HDFS后BLOB字段存儲為16進(jìn)制形式。

bin/sqoop-import \ --connect jdbc:mysql://192.168.77.137:3306/zhjy \ --username root \ --password 123456 \ --table ceshi \ --columns "id,name,photo" \ --split-by id \ -m 4 \ --inline-lob-limit=16777126 \設(shè)置內(nèi)聯(lián)的LOB對象的大小 --target-dir /user/hive/warehouse

2.1.3導(dǎo)入關(guān)系表到Hive

第一步:導(dǎo)入需要的jar包

將我們mysql表當(dāng)中的數(shù)據(jù)直接導(dǎo)入到hive表中的話,我們需要將hive的一個叫做的jar包拷貝到sqoop的lib目錄下

cp /export/servers/hive-1.1.0-cdh5.14.0/lib/ /export/server

第二步:開始導(dǎo)入

day=`date -d "yesterday" +%Y%m%d` sqoop import \        --導(dǎo)入數(shù)據(jù) --connect jdbc:mysql://10.2.111.87:3306/ehl_apmp \        --連接url --username root \        --用戶名 --password root \        --密碼 --table zf_jygz_thjc \        --要導(dǎo)入的表 -m 1 \        --maptask --hive-drop-import-delims \        --導(dǎo)入時刪除數(shù)據(jù)庫中特殊字符     --hive-overwrite \        --覆蓋導(dǎo)入 --hive-import \        --導(dǎo)入到hive表中 --hive-database ods \        --導(dǎo)入到hive中哪個數(shù)據(jù)庫 --hive-table ods_zf_jygz_thjc \        --導(dǎo)入到hive中哪個表 --fields-terminated-by '\t' \        --字段分隔符 --lines-terminated-by '\n'         --指定行分隔符 --null-string '\\N' \        --字符串類型為null是代替字符 --null-non-string '\\N' \        --字非符串類型為null是的代替字符 --hive-partition-key day \        --hive表的分區(qū)字段 --hive-partition-value "$day"        --指定導(dǎo)入表的分區(qū)值

導(dǎo)入關(guān)系表到hive并自動創(chuàng)建hive表

們也可以通過命令來將我們的mysql的表直接導(dǎo)入到hive表當(dāng)中去

sqoop import --connect jdbc:mysql://10.2.111.87:3306/ehl_apmp \ --username root --password root \ --table $1 \ --hive-import \ --hive-database ods \ --create-hive-table \ --fields-terminated-by '\t' \ --null-string '\\N' \ --null-non-string '\\N' \ --split-by code \ -m 4

通過這個命令,我們可以直接將我們mysql表當(dāng)中的數(shù)據(jù)以及表結(jié)構(gòu)一起倒入到hive當(dāng)中去

2.1.4增量導(dǎo)入

--incremental<mode> 增量模式。

Append id 是獲取一個某一列的某個值。

lastmodified “2016-12-15 15:47:35” 獲取某個時間后修改的所有數(shù)據(jù)

-append 附加模式

-merge-key id 合并模式

--check-column<column name> 用來指定一些列,可以去指定多個列;通常的是指定主鍵id

--last -value<last check column value> 從哪個值開始增量

==注意:增量導(dǎo)入的時候,一定不能加參數(shù)--delete-target-dir 否則會報錯==

第一種增量導(dǎo)入方式(不常用)

1.append方式

使用場景:有個訂單表,里面每個訂單有一個唯一標(biāo)識的自增列id,在關(guān)系型數(shù)據(jù)庫中以主鍵的形式存在。之前已經(jīng)將id在0-1000之間的編號的訂單導(dǎo)入到HDFS 中;如果在產(chǎn)生新的訂單,此時我們只需指定incremental參數(shù)為append,--last-value參數(shù)為1000即可,表示只從id大于1000后開始導(dǎo)入。

(1)創(chuàng)建一個MySQL表

CREATE TABLE orders( o_id INT PRIMARY KEY AUTO_INCREMENT, o_name VARCHAR(255), o_price INT ); INSERT INTO orders(o_id,o_name,o_price) VALUES(1,'聯(lián)想',5000); INSERT INTO orders(o_id,o_name,o_price) VALUES(2,'海爾',3000); INSERT INTO orders(o_id,o_name,o_price) VALUES(3,'雷神',5000); INSERT INTO orders(o_id,o_name,o_price) VALUES(4,'JACK JONES',800); INSERT INTO orders(o_id,o_name,o_price) VALUES(5,'真維斯',200);

(2)創(chuàng)建一個hive表(表結(jié)構(gòu)與mysql一致)

bin/sqoop import \ --connect jdbc:mysql://192.168.22.30:3306/userdb \ --username root \ --password root \ --table emp \ --target-dir /sqoop/increment \ --num-mappers 1 \ --incremental append \ --check-column id \ --last-value 1202

注意:

append 模式不支持寫入到hive表中

2.lastModify方式

此方式要求原有表有time字段,它能指定一個時間戳,讓sqoop把該時間戳之后的數(shù)據(jù)導(dǎo)入到HDFS;因為后續(xù)訂單可能狀體會變化,變化后time字段時間戳也會變化,此時sqoop依然會將相同狀態(tài)更改后的訂單導(dǎo)入HDFS,當(dāng)然我們可以只當(dāng)merge-key參數(shù)為order-id,表示將后續(xù)新的記錄和原有記錄合并。

# 將時間列大于等于閾值的數(shù)據(jù)增量導(dǎo)入HDFS

sqoop import \ --connect jdbc:mysql://192.168.xxx.xxx:3316/testdb \ --username root \ --password transwarp \ --query “select order_id, name from order_table where \$CONDITIONS” \ --target-dir /user/root/order_all \ --split-by id \ -m 4 \ --incremental lastmodified \ --merge-key order_id \ --check-column time \ # remember this date !!! --last-value “2014-11-09 21:00:00”

使用 lastmodified 方式導(dǎo)入數(shù)據(jù),要指定增量數(shù)據(jù)是要 --append(追加)還是要 --merge-key(合并)last-value 指定的值是會包含于增量導(dǎo)入的數(shù)據(jù)中。

第二種增量導(dǎo)入方式(推薦)

==通過where條件選取數(shù)據(jù)更加精準(zhǔn)==

yesterday=`date -d "yesterday" +%Y_%m_%d` where="update_time >= \"${yesterday}"" day=`date -d "yesterday" +%Y-%m-%d` sqoop import \        --導(dǎo)入數(shù)據(jù) --connect jdbc:mysql://10.2.111.87:3306/ehl_apmp \        --連接url --username root \        --用戶名 --password root \        --密碼 --table zf_jygz_thjc \        --要導(dǎo)入的表 -m 1 \        --maptask--hive-drop-import-delims \        --導(dǎo)入時刪除數(shù)據(jù)庫中特殊字符     --hive-overwrite \        --覆蓋導(dǎo)入 --hive-import \        --導(dǎo)入到hive表中 --hive-database ods \        --導(dǎo)入到hive中哪個數(shù)據(jù)庫 --hive-table ods_zf_jygz_thjc \        --導(dǎo)入到hive中哪個表 --fields-terminated-by '\t' \        --字段分隔符 --lines-terminated-by '\n'         --指定行分隔符 --columns 'zf_bh,zf_xm' \        --導(dǎo)入的字段(可選) --where "${where}" \        --條件導(dǎo)入 --null-string '\\N' \        --字符串類型為null是代替字符 --null-non-string '\\N' \        --字非符串類型為null是的代替字符 --hive-partition-key day \        --hive表的分區(qū)字段 --hive-partition-value "$day"        --指定導(dǎo)入表的分區(qū)值

2.1.5從RDBMS到hbase

bin/sqoop import --connect jdbc:mysql://192.168.22.30:3306/userdb \ --username root \ --password root \ --table emp \ --columns "id,name,sex" \ --column-family "info" --hbase-create-table \ --hbase-row-key "id" \ --hbase-table "hbase_test" \ --split-by id \ --num-mappers 1

會報錯

原因: 只支持 HBa 之前的版本的自動創(chuàng)建 HBase 表的功能。

解決方案:手動創(chuàng)建 HBase 表

hbase> create 'hbase_staff','info'

2.1.6從HDFS到RDBMS

導(dǎo)出前,目標(biāo)表必須存在與目標(biāo)數(shù)據(jù)庫中

默認(rèn)操作是將文件中的數(shù)據(jù)使用insert語句插入到表中

數(shù)據(jù)是在HDFS當(dāng)中的如下目錄/sqoop/emp,數(shù)據(jù)內(nèi)容如下

1201,gopal,manager,50000,TP,2018-06-17 18:54:32.0,2018-06-17 18:54:32.0,1 1202,manisha,Proof reader,50000,TP,2018-06-15 18:54:32.0,2018-06-17 20:26:08.0,1 1203,khalil,php dev,30000,AC,2018-06-17 18:54:32.0,2018-06-17 18:54:32.0,1 1204,prasanth,php dev,30000,AC,2018-06-17 18:54:32.0,2018-06-17 21:05:52.0,0 1205,kranthi,admin,20000,TP,2018-06-17 18:54:32.0,2018-06-17 18:54:32.0,1

第一步:創(chuàng)建MySQL表

CREATE TABLE `emp_out` ( `id` INT(11) DEFAULT NULL, `name` VARCHAR(100) DEFAULT NULL, `deg` VARCHAR(100) DEFAULT NULL, `salary` INT(11) DEFAULT NULL, `dept` VARCHAR(10) DEFAULT NULL, `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `is_delete` BIGINT(20) DEFAULT '1' ) ENGINE=INNODB DEFAULT CHARSET=utf8;

第二步:執(zhí)行導(dǎo)出命令

通過export來實現(xiàn)數(shù)據(jù)的導(dǎo)出,將hdfs的數(shù)據(jù)導(dǎo)出到mysql當(dāng)中去

全量導(dǎo)出

bin/sqoop export \ --connect jdbc:mysql://172.16.43.67:3306/userdb \ --username root \ --password admin \ --table emp_out \ --export-dir /sqoop/emp \ --columns id,name \(當(dāng)文件數(shù)據(jù)與表結(jié)構(gòu)一致時,可以不指定) --input-fields-terminated-by ","

增量導(dǎo)出

bin/sqoop export \ --connect jdbc:mysql://192.168.77.137:3306/zhjy \ --username root \ --password 123456 \ --table emp_out \ --update-key id \ --update-mode allowinsert \(新增的數(shù)據(jù)被導(dǎo)出) --export-dir '/user/hive/warehouse/ods_ceshi/part-m-00000' \ --input-null-string '\\N' \ --input-null-non-string '\\N' \ --input-fields-terminated-by ',' \ -m 1

更新導(dǎo)出

bin/sqoop export \ --connect jdbc:mysql://192.168.77.137:3306/zhjy \ --username root \ --password 123456 \ --table emp_out \ --update-key id \ --update-mode updateonly \(只能導(dǎo)出修改后的數(shù)據(jù),不能導(dǎo)出新增的數(shù)據(jù)) --export-dir '/user/hive/warehouse/ods_ceshi/part-m-00000' \ --input-null-string '\\N' \ --input-null-non-string '\\N' \ --input-fields-terminated-by ',' \ -m 1

總結(jié):

參數(shù)介紹
--update-key 后面也可以接多個關(guān)鍵字列名,可以使用逗號隔開,Sqoop將會匹配多個關(guān)鍵字后再執(zhí)行更新操作。
--export-dir 參數(shù)配合--table或者--call參數(shù)使用,指定了HDFS上需要將數(shù)據(jù)導(dǎo)入到MySQL中的文件集目錄。
--update-mode updateonly和allowinsert。 默認(rèn)模式為updateonly,如果指定--update-mode模式為allowinsert,可以將目標(biāo)數(shù)據(jù)庫中原來不存在的數(shù)據(jù)也導(dǎo)入到數(shù)據(jù)庫表中。即將存在的數(shù)據(jù)更新,不存在數(shù)據(jù)插入。
組合測試及說明
1、當(dāng)指定update-key,且關(guān)系型數(shù)據(jù)庫表存在主鍵時:
A、allowinsert模式時,為更新目標(biāo)數(shù)據(jù)庫表存的內(nèi)容,并且原來不存在的數(shù)據(jù)也導(dǎo)入到數(shù)據(jù)庫表;
B、updateonly模式時,為更新目標(biāo)數(shù)據(jù)庫表存的內(nèi)容,并且原來不存在的數(shù)據(jù)也不導(dǎo)入到數(shù)據(jù)庫表;
2、當(dāng)指定update-key,且關(guān)系型數(shù)據(jù)庫表不存在主鍵時:
A、allowinsert模式時,為全部數(shù)據(jù)追加導(dǎo)入到數(shù)據(jù)庫表;
B、updateonly模式時,為更新目標(biāo)數(shù)據(jù)庫表存的內(nèi)容,并且原來不存在的數(shù)據(jù)也不導(dǎo)入到數(shù)據(jù)庫表;
3、當(dāng)不指定update-key,且關(guān)系型數(shù)據(jù)庫表存在主鍵時:
A、allowinsert模式時,報主鍵沖突,數(shù)據(jù)無變化;
B、updateonly模式時,報主鍵沖突,數(shù)據(jù)無變化;
4、當(dāng)不指定update-key,且關(guān)系型數(shù)據(jù)庫表不存在主鍵時:
A、allowinsert模式時,為全部數(shù)據(jù)追加導(dǎo)入到數(shù)據(jù)庫表;
B、updateonly模式時,為全部數(shù)據(jù)追加導(dǎo)入到數(shù)據(jù)庫表;

實際案例:

(1)mysql批量導(dǎo)入hive

#!/bin/bash source /etc/profile num=0 list="table1 table2 table3" for i in $list; do echo "$sum" echo "$i" echo "sqoop開始批量導(dǎo)入......" sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password 123456 --table person --hive-table db.$i --delete-target-dir --hive-overwrite --hive-import & num=$(expr $num + 1) if [$sum -gt 4 ]; then { echo "等待批量任務(wù)完成" wait echo "開始下一批導(dǎo)入" num = 0 } fi done echo "等待最后一批任務(wù)完成" wait echo "全部導(dǎo)入完成"

使用shell腳本:

#!/bin/sh export SQOOP_HOME=/usr/share hostname="192.168.1.199" user="root" password="root" database="test" table="tags" curr_max=0 function db_to_hive(){ ${SQOOP_HOME}/bin/sqoop import --connect jdbc:mysql://${hostname}/${database} \ --username ${user} \ --password ${password} \ --table ${table} \ --split-by docid \ --hive-import \ --hive-table lan.ding --fields-terminated-by '\t' --incremental append --check-column docid --last-value ${curr_max} result=`mysql -h${hostname} -u${user} -p${password} ${database}<<EOF select max(docid) from ${table}; EOF` curr_max=`echo $result |awk '{print $2}'` } if [ $# -eq 0 ];then while true do db_to_hive sleep 120 done exit fi

筆者目前用sqoop把mysql數(shù)據(jù)導(dǎo)入到Hive中,最后實現(xiàn)命令行導(dǎo)入,sqoop版本1.4.7,實現(xiàn)如下

sqoop job --import --connect jdbc:mysql://10.4.20.93:3303 \ --username user \ --password 123456 \ --query "select user_name ,user_id,identype from users where $CONDITIONS" \ --hive-import \ --hive-database haibian_odbc \ --hive-table users \ --split-by id \ --fields-terminated-by '\01' \ --lines-terminated-by '\n' \ --target-dir /user/hive/tmp/users \ --hive-delims-replacement ' ' --incremental append \ --check-column id \ --last-value 0

最后需要把這個導(dǎo)入搞成job,每天定時去跑,實現(xiàn)數(shù)據(jù)的自動化增量導(dǎo)入,sqoop支持job的管理,可以把導(dǎo)入創(chuàng)建成job重復(fù)去跑,并且它會在metastore中記錄增值,每次執(zhí)行增量導(dǎo)入之前去查詢

創(chuàng)建job命令如下

sqoop job --create users -- import --connect jdbc:mysql://10.4.20.93:3303 \--username user \--password 123456 \--query "select user_name ,user_id,identype from users where $CONDITIONS" \--hive-import \--hive-database haibian_odbc \--hive-table users \--split-by id \--fields-terminated-by '\01' \--lines-terminated-by '\n' \--target-dir /user/hive/tmp/users \--hive-delims-replacement ' ' --incremental append \--check-column id \--last-value 0

創(chuàng)建完job就可以去執(zhí)行它了

sqoop job --exec users

可以把該指令設(shè)為Linux定時任務(wù),或者用Azkaban定時去執(zhí)行它

shell腳本循環(huán)遍歷日期,用于sqoop腳本

#! /bin/bash first="$1" second="$2" while [ "$first" != "$second" ] do date=`date -d "$first" +"%Y-%m-%d"` sqoop export \ --connect jdbc:mysql:// \ --username \ --password \ --table dwd_fact_front_orderinfo \ --export-dir /user/hive/warehouse;$date" \ --input-null-non-string '\\N' \ --input-null-string '\\N' \ --input-fields-terminated-by "\t" \ --update-key id \ --update-mode allowinsert \ --m 1; let first=`date -d "-1 days ago ${first}" +%Y%m%d` done

Sqoop導(dǎo)出問題總結(jié)

hive導(dǎo)出到MySQL時,date類型數(shù)據(jù)發(fā)生變化?

問題原因:時區(qū)設(shè)置問題,date -R查看服務(wù)器時間,show VARIABLES LIKE "%time_zone"查看Mysql時間,system并不表示中國的標(biāo)準(zhǔn)時間,要將時間設(shè)置為東八區(qū)

set global time_zone = '+08:00'; set time_zone = '+08:00'; flush privileges;

2.2Kettle調(diào)度工具

3.任務(wù)流調(diào)度工具

3.1調(diào)度工具對比

(1):對市面上最流行的兩種調(diào)度器,給出以下詳細(xì)對比,以供技術(shù)選型參考??傮w來說,ooize相比azkaban是一個重量級的任務(wù)調(diào)度系統(tǒng),功能全面,但配置使用也更復(fù)雜。如果可以不在意某些功能的缺失,輕量級調(diào)度器azkaban是很不錯的候選對象。

(2):功能:

  兩者均可以調(diào)度mapreduce,pig,java,腳本工作流任務(wù);

  兩者均可以定時執(zhí)行工作流任務(wù);

(3):工作流定義:

  Azkaban使用Properties文件定義工作流;

  Oozie使用XML文件定義工作流;

(4):工作流傳參:

  Azkaban支持直接傳參,例如${input};

  Oozie支持參數(shù)和EL表達(dá)式,例如${fs:dirSize(myInputDir)};

(5):定時執(zhí)行:

  Azkaban的定時執(zhí)行任務(wù)是基于時間的;

  Oozie的定時執(zhí)行任務(wù)基于時間和輸入數(shù)據(jù);

(6):資源管理:

  Azkaban有較嚴(yán)格的權(quán)限控制,如用戶對工作流進(jìn)行讀/寫/執(zhí)行等操作;

  Oozie暫無嚴(yán)格的權(quán)限控制;

(7):工作流執(zhí)行:

  Azkaban有兩種運行模式,分別是solo server mode(executor server和web server部署在同一臺節(jié)點)和multi server mode(executor server和web server可以部署在不同節(jié)點);

  Oozie作為工作流服務(wù)器運行,支持多用戶和多工作流;

(8):工作流管理:

  Azkaban支持瀏覽器以及ajax方式操作工作流;

  Oozie支持命令行、HTTP REST、Java API、瀏覽器操作工作流;

3.2 Azkaban調(diào)度工具

3.1.1啟動solo-server

cd /export/server bin

3.1.2瀏覽器頁面訪問

瀏覽器頁面訪問

http://node03:8081/

3.3 Oozie調(diào)度工具

使用Oozie時通常整合hue,用戶數(shù)據(jù)倉庫調(diào)度

3.3.1數(shù)倉流程說明

大致流程: MySQL -> HDFS -> ODS -> DWD -> DWS -> ADS -> MySQL 具體流程: 1. MySQL業(yè)務(wù)通過Sqoop數(shù)據(jù)導(dǎo)入HDFS 2. 將HDFS數(shù)據(jù)導(dǎo)入Hive數(shù)倉ODS層 3. 將ODS數(shù)據(jù)簡單清洗寫入DWD層 4. 將DWD數(shù)據(jù)輕度匯總寫入DWS層寬表 5. 將DWS層數(shù)據(jù)統(tǒng)計結(jié)果寫入ADS層 6. 將ADS層數(shù)據(jù)通過Sqoop導(dǎo)出到MySQL匯總表

3.3.2創(chuàng)建工作流

1. 創(chuàng)建工作流

2. 編輯工作流

3. 上傳腳本

4. 添加文件

就是剛才選擇的腳本

5. 填寫參數(shù)

腳本里需要的參數(shù),盡量設(shè)置為動態(tài)自動獲取,如 ${date}

第一步的參數(shù)是所有文件和當(dāng)天日期,后面的只需要日期,最后一步是導(dǎo)出所有結(jié)果,相應(yīng)填入

6. 依次添加后續(xù)任務(wù)

添加文件和設(shè)置相應(yīng)參數(shù)

7. 保存,或者運行

8. 狀態(tài)提示

運行后會有狀態(tài)提示頁面,可以看到任務(wù)進(jìn)度

9. 其他

點擊調(diào)度任務(wù)的頁面情況

定時調(diào)度

1. 創(chuàng)建定時計劃(schedule)

2. 修改屬性

修改定時任務(wù)名和描述

3. 添加任務(wù)

添加需要定時調(diào)度的任務(wù)

4. 設(shè)置調(diào)度時間

5. Crontab高級語法模式

6. 參數(shù)設(shè)置

sm-workflow的參數(shù)都是寫死的,沒有設(shè)置動態(tài),這里的下拉列表就不會有可選項。

設(shè)置參數(shù)

將sm-workflow的日期修改為 ${do_date},保存

進(jìn)入定時計劃sm-dw中,會看到有參數(shù) do_date

填入相應(yīng)參數(shù),前一天日期

${coord:formatTime(coord:dateOffset(coord:nominalTime(), -1, ‘DAY’), ‘yyyyMMdd’)}

Oozie常用系統(tǒng)常量

當(dāng)然,也可以通過這樣將參數(shù)傳入workflow任務(wù)中,代碼或者shell中需要的參數(shù)。

如,修改sm-workflow 中的 ,添加一個參數(shù) ${num}。

編輯文件(需要登陸Hue的用戶有對HDFS操作的權(quán)限),修改shell中的一個值為參數(shù),保存。

在workflow中,編輯添加參數(shù) ${num} ,或者num=${num} 保存。

進(jìn)入schedule中,可以看到添加的參數(shù),編輯輸入相應(yīng)參數(shù)即可。

Bundle

Bundle統(tǒng)一管理所有定時調(diào)度,階段劃分:Bundle > Schedule > workflow

1.《【solo命令】計劃工具(ETL任務(wù)流)》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識,僅代表作者本人觀點,與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。

2.《【solo命令】計劃工具(ETL任務(wù)流)》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進(jìn)行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。

3.文章轉(zhuǎn)載時請保留本站內(nèi)容來源地址,http://f99ss.com/gl/2505425.html

上一篇

【天書奇談水魔爆】回合制頁游天花板《天書奇談》

下一篇

【勿忘我存檔損壞】不擔(dān)當(dāng),不做,胡作非為,虛假地抱著很高的問題,如何破除?

【solo命令】狹路相逢勇者勝,選擇dota  2中路熱血不服戰(zhàn)爭

【solo命令】狹路相逢勇者勝,選擇dota 2中路熱血不服戰(zhàn)爭

solo命令相關(guān)介紹,就在幾天前,巡回直播朱青直播的時候,一局的路人和他都想中途走,兩人之間發(fā)生了一些矛盾,一對噴發(fā)后,雙方約定好的最后進(jìn)行電影公司單人比賽,一局的賭注約為500元人民幣。第一場比賽因為一些失誤輸給了這個路...

【solo命令】魔獸世界懷舊服:關(guān)于騎士PVP的一些基本提示

【solo命令】魔獸世界懷舊服:關(guān)于騎士PVP的一些基本提示

solo命令相關(guān)介紹,作者:NGA-廢物殺手 以懺悔6秒的速度脫胎換骨。 Pvp中陳腐的6秒脫電規(guī)則在這里就不贅述了。騎士在單身中使用懺悔,在懺悔結(jié)束前的最后一秒可以脫離戰(zhàn)斗,如果脫離戰(zhàn)斗,可以更換裝備和配件。設(shè)備更換完成...

【solo命令】協(xié)調(diào)的時候會說很多英語,不知道是什么意思?學(xué)習(xí)

【solo命令】協(xié)調(diào)的時候會說很多英語,不知道是什么意思?學(xué)習(xí)

solo命令相關(guān)介紹,協(xié)調(diào)的時候會說很多英語。沒有說明就不能協(xié)調(diào),小編整理了英語的相應(yīng)含義和效果。 增益增益;控制輸入信號的大小 高音;高音。用于高頻調(diào)整 MID if可以選擇250HZ5KHZ自由頻率 低低頻;用來調(diào)節(jié)低...

【solo命令】推薦8個優(yōu)秀的國產(chǎn)開源博客系統(tǒng)

【solo命令】推薦8個優(yōu)秀的國產(chǎn)開源博客系統(tǒng)

solo命令相關(guān)介紹,對于程序員來說,除了勤工儉學(xué)技術(shù),寫博客記錄開發(fā)過程和開發(fā)經(jīng)驗也是非常有意義的事情。(威廉莎士比亞、溫斯頓、程序員、程序員、程序員、程序員、程序員、程序員、程序員)不僅有助于梳理自己的想法,還能避免別...

【solo命令】小巧漂亮的Java博客系統(tǒng)

【solo命令】小巧漂亮的Java博客系統(tǒng)

solo命令相關(guān)介紹,Solo是一個可以用命令制作的Java開源博客系統(tǒng),內(nèi)置了18套精心制作的皮膚。除此之外,solo還有非常活躍的社區(qū),分享給文章社區(qū)后,可以進(jìn)行豐富的交流互動,讓很多人看到。 功能 Markdown/...

【solo命令】15日開源軟件更新,Java博客系統(tǒng)solo推薦

【solo命令】15日開源軟件更新,Java博客系統(tǒng)solo推薦

solo命令相關(guān)介紹,Gradle 5.0 RC3發(fā)布,Kotlin DSL升級到1.0.3 Gradle 5.0 RC3發(fā)布。此版本修復(fù)了RC2中的一些錯誤,解決了某些issue: 1、將Kotlin DSL升級到v1....

【solo命令】軟件更新,Java開源博客solo  2 . 9 . 5發(fā)布,大范圍的詳細(xì)優(yōu)化。

【solo命令】軟件更新,Java開源博客solo 2 . 9 . 5發(fā)布,大范圍的詳細(xì)優(yōu)化。

solo命令相關(guān)介紹,關(guān)注開源中國OSC頭條獲取最新技術(shù)信息。 Solo是一個可以用命令創(chuàng)建的Java開源博客系統(tǒng)。如果想獨立博客,請不要錯過!(大衛(wèi)亞設(shè),Northern Exposure(美國電視),獨立博客名言)V2...

【solo命令】“程序員大佬”是Java體現(xiàn)的博客系統(tǒng),讓我們創(chuàng)建自己的博客吧!

【solo命令】“程序員大佬”是Java體現(xiàn)的博客系統(tǒng),讓我們創(chuàng)建自己的博客吧!

solo命令相關(guān)介紹,簡介 Solo是一個可以用命令制作的Java開源博客系統(tǒng),內(nèi)置了15套精心制作的皮膚。除此之外,solo還有非常活躍的社區(qū),分享給文章社區(qū)后,可以進(jìn)行豐富的交流互動,讓很多人看到。 SOLO的第一個版...