sqoop全量增量數(shù)據(jù)導(dǎo)入HDFS

用到的表昔善,表名t00_test

全量導(dǎo)入

將sqlserver表導(dǎo)入hdfs:

直接導(dǎo)出全表

sqoop import --connect 'jdbc:sqlserver://192.168.XXX.XXX:1433;database=Data00' --username aaa --password 123 --table t00_test --fields-terminated-by '\t' -m 1

導(dǎo)出指定列

sqoop import --connect 'jdbc:sqlserver://192.168.XXX.XXX:1433;database=Data00' --username aaa --password 123 --table t00_test --columns 'v00,v01' --where 'v01>1' --fields-terminated-by '\t' -m 1

#? --columns <列名>? ?指定列? ? ? --where '條件'? 指定條件

SQL語(yǔ)句導(dǎo)出指定列

(有條件)

sqoop import --connect 'jdbc:sqlserver://192.168.XXX.XXX:1433;database=Data00' --username aaa --password 123 --target-dir 'hdfs://nameservice/user/root/t00_test1' --query "select v00,v01 from t00_test where v01<50 and \$CONDITIONS" --fields-terminated-by '\t' -m 1

(無條件)

sqoop import --connect 'jdbc:sqlserver://192.168.XXX.XXX:1433;database=Data00' --username aaa --password 123 --target-dir 'hdfs://nameservice/user/root/t00_test1' --query "select v00,v01 from t00_test where \$CONDITIONS" --fields-terminated-by '\t' -m 1

注意:

(1)SQL語(yǔ)句必須要用雙引號(hào),其他引號(hào)可單可雙(2)必須制定目標(biāo)文件的位置,--target-dir HDFS目標(biāo)目錄,目錄如果設(shè)定在本地娜氏,則可能會(huì)提示權(quán)限不足導(dǎo)入失敗抬探。(3)用sql選擇導(dǎo)入則必須加入where \$CONDITIONS(4)SQL導(dǎo)入就不能再加--table tablename 語(yǔ)句了

將MySQL表導(dǎo)入hdfs:

其他的跟SqlServer一樣,只是數(shù)據(jù)庫(kù)這里要稍作一下改變

sqoop import --connect 'jdbc:mysql://192.168.XXX.XXX:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false'?--username aaa --password 123?--table t00_test --fields-terminated-by '\t' -m 1

這里為什么數(shù)據(jù)庫(kù)信息后面要加useUnicode=true&characterEncoding=utf-8&useSSL=false荞膘,不然會(huì)有如下錯(cuò)誤提示:

WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

補(bǔ)充:

-m 后面的數(shù)字表示mapper任務(wù)數(shù),如果設(shè)為大于1的數(shù)玉工,即表示導(dǎo)入方式為并發(fā)導(dǎo)入羽资,這時(shí)我們必須同時(shí)指定 - -split-by 參數(shù)指定根據(jù)哪一列來實(shí)現(xiàn)哈希分片,從而將不同分片的數(shù)據(jù)分發(fā)到不同 map 任務(wù)上去跑遵班,避免數(shù)據(jù)傾斜屠升。

查看導(dǎo)入成功后的HDFS對(duì)應(yīng)目錄上的文件(此HDFS目錄事先不需要自己建立,Sqoop會(huì)在導(dǎo)入的過程中自行建立狭郑,若是不寫--target-dir 則默認(rèn)是hdfs上的user/username/tablename 路徑):

查看hdfs里的文件:hadoop fs -ls hdfs://nameservice/user/root/t00_test

刪除hdfs里面的文件:hadoop fs -rmr hdfs://nameservice/user/root/t00_test

查看導(dǎo)入表的數(shù)據(jù):hadoop fs -cat hdfs://nameservice/user/root/t00_test/part-m-00000


增量導(dǎo)入

將sqlserver表導(dǎo)入hdfs:

#? -check-column? #指定檢索列腹暖、-last-value? #從該值所在行開始導(dǎo)入、-incremental? #指定導(dǎo)入模式

append模式:基于遞增列的增量導(dǎo)入(將遞增列值大于閾值的所有數(shù)據(jù)增量導(dǎo)入)翰萨,只對(duì)數(shù)據(jù)進(jìn)行附加脏答,不支持更改

lastmodified模式:基于時(shí)間列的增量導(dǎo)入(將時(shí)間列大于等于閾值的所有數(shù)據(jù)增量導(dǎo)入),適用于對(duì)源數(shù)據(jù)進(jìn)行更改,對(duì)于變動(dòng)數(shù)據(jù)收集殖告,必須記錄變動(dòng)時(shí)間

Append方式

增量導(dǎo)入所有列:

sqoop import --connect 'jdbc:sqlserver://192.168.XXX.XXX:1433;database=Data00' --username aaa --password 123 --table t00_test --check-column v00 --last-value '2019-03-6' --incremental append--fields-terminated-by '\t' -m 1

增量導(dǎo)入指定列:

sqoop import --connect 'jdbc:sqlserver://192.168.XXX.XXX:1433;database=Data00' --username aaa --password 123 --table t00_test --check-column v00 --last-value '2019-03-17' --incremental? append--columns 'v00,v01' --where 'v01>1' --fields-terminated-by '\t' -m 1

SQL語(yǔ)句增量導(dǎo)入指定列:

(有條件)

sqoop import --connect 'jdbc:sqlserver://192.168.XXX.XXX:1433;database=Data00' --username aaa --password 123 --check-column v00 --last-value '2019-03-17' --incremental? append--target-dir 'hdfs://nameservice/user/root/t00_test1' --query "select v00,v01 from t00_test where v01<50 and \$CONDITIONS" --fields-terminated-by '\t' -m 1

(無條件)

sqoop import --connect 'jdbc:sqlserver://192.168.XXX.XXX:1433;database=Data00' --username aaa --password 123 --target-dir 'hdfs://nameservice/user/root/t00_test1' --query "select v00,v01 from t00_test where \$CONDITIONS" --fields-terminated-by '\t' -m 1

lastmodified模式

sqoop import --connect 'jdbc:sqlserver://192.168.XXX.XXX:1433;database=Data00' --username aaa --password 123 --table t00_test --check-column v00 --last-value '2019-03-17' --incremental lastmodified --merge-key v00--fields-terminated-by '\t' -m 1

sqoop import --connect 'jdbc:sqlserver://192.168.XXX.XXX:1433;database=Data00' --username aaa --password 123 --table t00_copy1 --check-column occur --last-value '2015-09-05 13:35:00' --incremental lastmodified --merge-key occur--columns 'occur,v00,v01' --fields-terminated-by '\t' -m 1

特別的:

如果last-value指定的值不在表中,則會(huì)對(duì)這個(gè)值進(jìn)行比較羡洁,導(dǎo)出比這個(gè)值大的部分焚廊,比如執(zhí)行--last-value '2019-03-07'



重要Tip:

生產(chǎn)環(huán)境中,為了防止主庫(kù)被Sqoop抽崩诽里,我們一般從備庫(kù)中抽取數(shù)據(jù)谤狡。

一般RDBMS的導(dǎo)出速度控制在60~80MB/s墓懂,每個(gè) map 任務(wù)的處理速度5~10MB/s 估算,即 -m 參數(shù)一般設(shè)置4~8捕仔,表示啟動(dòng) 4~8 個(gè)map 任務(wù)并發(fā)抽取榜跌。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末钓葫,一起剝皮案震驚了整個(gè)濱河市础浮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌豆同,老刑警劉巖诱告,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锄禽,死亡現(xiàn)場(chǎng)離奇詭異靴姿,居然都是意外死亡佛吓,警方通過查閱死者的電腦和手機(jī)维雇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門逸贾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來铝侵,“玉大人触徐,你說我怎么就攤上這事撞鹉】谆觯” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)温自。 經(jīng)常有香客問我悼泌,道長(zhǎng)夹界,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮械媒,結(jié)果婚禮上纷捞,老公的妹妹穿的比我還像新娘主儡。我一直安慰自己编振,他們只是感情好踪央,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布健无。 她就那樣靜靜地躺著累贤,像睡著了一般臼膏。 火紅的嫁衣襯著肌膚如雪渗磅。 梳的紋絲不亂的頭發(fā)上始鱼,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音会烙,去河邊找鬼持搜。 笑死葫盼,一個(gè)胖子當(dāng)著我的面吹牛贫导,可吹牛的內(nèi)容都是我干的孩灯。 我是一名探鬼主播峰档,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼欢顷!你這毒婦竟也來了抬驴?” 一聲冷哼從身側(cè)響起布持,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎芙委,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體侧啼,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡皮壁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年湿滓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了叽奥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朝氓。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡待德,死狀恐怖磅网,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情毙死,我是刑警寧澤确封,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布纠拔,位于F島的核電站稠诲,受9級(jí)特大地震影響略水,放射性物質(zhì)發(fā)生泄漏渊涝。R本人自食惡果不足惜炸卑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一蚯姆、第九天 我趴在偏房一處隱蔽的房頂上張望龄恋。 院中可真熱鬧函荣,春花似錦傻挂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至绪抛,卻和暖如春资铡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背幢码。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工笤休, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蛤育。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓宛官,卻偏偏與公主長(zhǎng)得像葫松,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子底洗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容