日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sqoop增量导入hdfs和导出

發布時間:2024/4/13 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 1

Sqoop的數據導出

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和导出的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。