sqoop增量导入hdfs和导出
生活随笔
收集整理的這篇文章主要介紹了
sqoop增量导入hdfs和导出
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
增量導入
在實際工作當中,數據的導入,很多時候都是只需要導入增量數據即可,并不需要將表中的數據全部導入到hive或者hdfs當中去,肯定會出現重復的數據的狀況,所以我們一般都是選用一些字段進行增量的導入,為了支持增量的導入,sqoop也給我們考慮到了這種情況并且支持增量的導入數據
增量導入是僅導入新添加的表中的行的技術。
它需要添加‘incremental’, ‘check-column’, 和 ‘last-value’選項來執行增量導入。
下面的語法用于Sqoop導入命令增量選項。
第一種增量導入使用上面的選項來實現
導入emp表當中id大于1202的所有數據
注意:增量導入的時候,一定不能加參數--delete-target-dir否則會報錯
bin/sqoop import \ ‐‐connect jdbc:mysql://192.168.1.7:3306/userdb \ ‐‐username root \ ‐‐password root \ ‐‐table emp \ ‐‐incremental append \ ‐‐check‐column id \ ‐‐last‐value 1202 \ ‐m 1 \ ‐‐target‐dir /sqoop/increment查看數據內容
hdfs dfs -text /sqoop/increment/part*
第二種增量導入通過--where條件來實現
或者我們使用--where來進行控制數據的選取會更加精準
bin/sqoop import \ ‐‐connect jdbc:mysql://192.168.1.7:3306/userdb \ ‐‐username root \ ‐‐password admin \ ‐‐table emp \ ‐‐incremental append \ ‐‐where "create_time > '2018‐06‐17 00:00:00' and create_time < '2018‐06‐ 17 23:59:59'" \ ‐‐target‐dir /sqoop/incement2 \ ‐‐check‐column id \ ‐‐m 1Sqoop的數據導出
1、將數據從HDFS把文件導出到RDBMS數據庫
導出前,目標表必須存在于目標數據庫中。
u 默認操作是從將文件中的數據使用INSERT語句插入到表中
u 更新模式下,是生成UPDATE語句更新表數據
hdfs導出到mysql
數據是在HDFS當中的如下目錄/sqoop/emp,數據內容如下
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第一步:創建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 UPDATECURRENT_TIMESTAMP,is_delete BIGINT(20) DEFAULT '1' ) ENGINE=INNODB DEFAULT CHARSET=utf8;第二步:執行導出命令
通過export來實現數據的導出,將hdfs的數據導出到mysql當中去
bin/sqoop export \ ‐‐connect jdbc:mysql://192.168.1.7:3306/userdb \ ‐‐username root ‐‐password root \ ‐‐table emp_out \ ‐‐export‐dir /sqoop/emp \ ‐‐input‐fields‐terminated‐by ","第三步:驗證mysql表數據
總結
以上是生活随笔為你收集整理的sqoop增量导入hdfs和导出的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sqoop导入-hive
- 下一篇: Collection集合概述