当前位置:首页 >> 数码
数码

调度基本功能(ETL+任务流)

2025-11-21 12:18

--as-textfile#登录信息压缩(压缩,解压缩方法)---compress---compression-codec org.apache.hadoop.io.compress.SnappyCodec

信息假设储存方法(信息读取文件播放器----( textfil parquet)---as-textfileImports data as plain text (default)---as-parquetfile Imports data to Parquet Files)

借助于请注意信息开集到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'"

BLOB信息到Hive

对于CLOB,如xml文本,sqoop可以搬迁到Hive请注意,互换队列读取为Unicode型式。对于BLOB,如jpg页面,sqoop无法必要搬迁到Hive请注意,必需不须搬迁到HDFS逆时针,然后再应用于Hive下达查找到Hive请注意。搬迁到HDFS后BLOB队列读取为16进制形式。

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 设立内联的LOB这不一定的不等---target-dir /user/hive/warehouse/ods.db/ceshi

jar包

第二步:开始借助于

day=MLT-date -d "yesterday" +%Y%m%dMLT-sqoop import ---借助于信息---connect jdbc:mysql://10.2.111.87:3306/ehl_apmp ---通往url---username root ---用户名---password root ---私钥---table zf_jygz_thjc ---要借助于的请注意-m 1 ---maptask---hive-drop-import-delims ---借助于时擦除信息库里特殊Unicode ---hive-overwrite ---遮盖借助于---hive-import ---借助于到hive请注意里---hive-database ods ---借助于到hive里哪个信息库---hive-table ods_zf_jygz_thjc ---借助于到hive里哪个请注意---fields-terminated-by ' ' ---队列分隔符---lines-terminated-by '' ---登录行分隔符---null-string '\N' ---Unicode串型式为null是代替Unicode---null-non-string '\N' ---字非符串型式为null是的代替Unicode---hive-partition-key day ---hive请注意的七区队列---hive-partition-value "$day" ---登录借助于请注意的七区值

们也可以通过下达来将我们的mysql的请注意必要借助于到hive请注意当里去

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 ' ' ---null-string '\N' ---null-non-string '\N' ---split-by code -m 4

2.1.4自适应借助于

Append id 是给予一个某一列的某个值。

merge-key id 合并方法在

append方法

自增列id,在关系型信息库里以都由键的形式普遍存在。之前已经将id在0-1000之间的编号的下单借助于到HDFS 里;如果在产生新的下单,此时我们只需登录incremental请注意达式为append,---last-value请注意达式为1000即可,请注意示只从id少于1000后开始借助于。

(1)创始人一个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,'联想',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)创始人一个hive请注意(请注意内部结构与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

Modify方法

# 将小时列少于大于阈值的信息自适应借助于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”

==通过where必需挑落选造出信息更加得心应手==

yesterday=MLT-date -d "yesterday" +%Y_%m_%dMLT-where="update_time>= "${yesterday}""day=MLT-date -d "yesterday" +%Y-%m-%dMLT-sqoop import ---借助于信息---connect jdbc:mysql://10.2.111.87:3306/ehl_apmp ---通往url---username root ---用户名---password root ---私钥---table zf_jygz_thjc ---要借助于的请注意-m 1 ---maptask---hive-drop-import-delims ---借助于时擦除信息库里特殊Unicode ---hive-overwrite ---遮盖借助于---hive-import ---借助于到hive请注意里---hive-database ods ---借助于到hive里哪个信息库---hive-table ods_zf_jygz_thjc ---借助于到hive里哪个请注意---fields-terminated-by ' ' ---队列分隔符---lines-terminated-by '' ---登录行分隔符---columns 'zf_bh,zf_xm' ---借助于的队列(可落选)---where "${where}" ---必需借助于---null-string '\N' ---Unicode串型式为null是代替Unicode---null-non-string '\N' ---字非符串型式为null是的代替Unicode---hive-partition-key day ---hive请注意的七区队列---hive-partition-value "$day" ---登录借助于请注意的七区值

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

2.1.6从HDFS到RDBMS

信息是在HDFS当里的如下录入/sqoop/emp,信息细节如下

1201,gopal,manager,50000,TP,2018-06-17 18:54:32.0,2018-06-17 18:54:32.0,11202,manisha,Proof reader,50000,TP,2018-06-15 18:54:32.0,2018-06-17 20:26:08.0,11203,khalil,php dev,30000,AC,2018-06-17 18:54:32.0,2018-06-17 18:54:32.0,11204,prasanth,php dev,30000,AC,2018-06-17 18:54:32.0,2018-06-17 21:05:52.0,01205,kranthi,admin,20000,TP,2018-06-17 18:54:32.0,2018-06-17 18:54:32.0,1

第一步:创始人MySQL请注意

CREATE TABLE MLT-emp_outMLT- ( MLT-idMLT- INT(11) DEFAULT NULL, MLT-nameMLT- VARCHAR(100) DEFAULT NULL, MLT-degMLT- VARCHAR(100) DEFAULT NULL, MLT-salaryMLT- INT(11) DEFAULT NULL, MLT-deptMLT- VARCHAR(10) DEFAULT NULL, MLT-create_timeMLT- TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, MLT-update_timeMLT- TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, MLT-is_deleteMLT- BIGINT(20) DEFAULT '1') ENGINE=INNODB DEFAULT CHARSET=utf8;

全量假设

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 (当文件信息与请注意内部结构赞同时,可以不登录)---input-fields-terminated-by ","

自适应假设

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 (新增的信息被假设)---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

更新假设

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 (必需假设重写后的信息,不能假设新增的信息)---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

(1)mysql批量借助于hive

#!/bin/bashsource /etc/profilenum=0list="table1 table2 table3"for i in $list; do echo "$sum" echo "$i" echo "sqoop开始批量借助于......" 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 "下次批量使命已完成" wait echo "开始下一批借助于" num = 0 } fidoneecho "下次最后一批使命已完成"waitecho "全部借助于已完成"

应用于shell解释器:

#!/bin/shexport SQOOP_HOME=/usr/share/sqoop-1.4.4hostuser="root"password="root"database="test"table="tags"curr_max=0function 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 ' ' ---incremental append ---check-column docid ---last-value ${curr_max} result=MLT-mysql -h${hostname} -u${user} -p${password} ${database}<笔者现在用sqoop把mysql信息借助于到Hive里,最后付诸下达行借助于,sqoop完整版1.4.7,付诸如下

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 '1' ---lines-terminated-by '' ---target-dir /user/hive/tmp/users ---hive-delims-replacement ' ' ---incremental append ---check-column id ---last-value 0

shell解释器循环遍历日期,用于sqoop解释器#! /bin/bashfirst="$1"second="$2"while [ "$first" != "$second" ]dodate=MLT-date -d "$first" +"%Y-%m-%d"MLT-sqoop export ---connect jdbc:mysql:// ---username ---password ---table dwd_fact_front_orderinfo ---export-dir /user/hive/warehouse/dwd.db/dwd_fact_front_orderinfo/day="$date" ---input-null-non-string '\N' ---input-null-string '\N' ---input-fields-terminated-by " " ---update-key id ---update-mode allowinsert ---m 1;let first=MLT-date -d "-1 days ago ${first}" +%Y%m%dMLT-doneSqoop假设难题总结

难题原因:夏令时设立难题,date -R查看服务器小时,show VARIABLES LIKE "%time_zone"查看Mysql小时,system这不请注意示里国的标准小时,要将小时设立为东七区

set global time_zone = '+08:00';set time_zone = '+08:00';flush privileges;2.2Kettle适时用以3.使命引适时用以3.1适时用以对比

3.2 Azkaban适时用以3.1.1启动solo-servercd /export/servers/azkaban-solo-server-0.1.0-SNAPSHOTbin/start-solo.sh3.1.2浏览器链接访问

3.3 Oozie适时用以

3.3.1数仓引程解释大致引程:MySQL -> HDFS -> ODS -> DWD -> DWS -> ADS -> MySQL 具体引程:1. MySQL业务通过Sqoop信息借助于HDFS2. 将HDFS信息借助于Hive数仓ODS层3. 将ODS信息简单清洗擦除DWD层4. 将DWD信息轻度汇总擦除DWS层宽请注意5. 将DWS层信息统计结果擦除ADS层6. 将ADS层信息通过Sqoop假设到MySQL汇总请注意3.3.2创始人实习引1. 创始人实习引 2. 编辑实习引 3. 完整版解释器 4. 掺入文件

5. 填写请注意达式

6. 分列掺入后续使命

7. 复原,或者列车运行 8. 状态查看

9. 其他

若有适时1. 创始人若有计划(schedule) 2. 重写并不一定

3. 掺入使命

4. 设立适时小时 5. Crontab高级语法方法在 6. 请注意达式设立

Bundle

杭州白癜风专家
昆明甲状腺
昆明白癜风治疗方法有什么
消化不良吃什么
重庆白癜风医院哪家专业好
小孩缺钙
痤疮食疗
吃什么可以止咳化痰
血糖高不能吃什么
咳嗽有痰用急支糖浆还是川贝枇杷膏

上一篇: 长沙小哥哥们到处吃辣条跨年,网友评论热闹了

下一篇: 【格林政经早报0105】

友情链接