




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、sqoop 課程安排Sqoop是什么架構(gòu)安裝導(dǎo)入導(dǎo)出其他工具介紹常見問題處理Sqoop2簡單應(yīng)用Sqoop是什么概述 Hadoop的優(yōu)勢在于對數(shù)據(jù)的存儲(chǔ)和處理,相比以前傳統(tǒng)的數(shù)據(jù)庫,在處理較較多的數(shù)據(jù)時(shí),傳統(tǒng)數(shù)據(jù)行業(yè)通過提升單機(jī)性能以提高處理性能,而且性價(jià)比隨著性能提高越來越低,在場景下派生出的大數(shù)據(jù)行業(yè)。 同樣的數(shù)據(jù)處理,hadoop無論是處理的性能和成本都遠(yuǎn)低于傳統(tǒng)通過單機(jī)處理,但是從傳統(tǒng)的數(shù)據(jù)處理切換到新生的hadoop平臺(tái),避免不了有數(shù)據(jù)遷移的過程,需要將傳統(tǒng)數(shù)據(jù)按照hadoop的規(guī)則進(jìn)行轉(zhuǎn)換,中間需要一個(gè)轉(zhuǎn)換的工具,由此派生出sqoop這樣一個(gè)優(yōu)秀的工具,不僅可以將關(guān)系數(shù)據(jù)庫(ora
2、cle、mysql、postgresql等)數(shù)據(jù)轉(zhuǎn)換到hadoop中進(jìn)行處理,同樣可以將hadoop數(shù)據(jù)處理的結(jié)果導(dǎo)入到關(guān)系數(shù)據(jù)庫中。sqoop的版本 sqoop有兩個(gè)版本,完全不兼容,可以從版本號(hào)進(jìn)行區(qū)分,1.4.x為sqoop1,1.99.x為sqoop2。Sqoop是什么sqoop的應(yīng)用場景 不用說,既然是一個(gè)轉(zhuǎn)換工具,在關(guān)系數(shù)據(jù)庫和hadoop之間數(shù)據(jù)的相互轉(zhuǎn)換就少不了。但是不是所有的數(shù)據(jù)都適合于hadoop處理,比如安全性高的銀行業(yè)以及結(jié)構(gòu)化很強(qiáng)的數(shù)據(jù)就不是很適合使用hadoop進(jìn)行處理、存儲(chǔ)。 sqoop的地位唯我獨(dú)尊! 同類產(chǎn)品 DataX :阿里頂級數(shù)據(jù)交換工具。架構(gòu)整體架構(gòu)
3、sqoop架構(gòu)非常簡單,是hadoop生態(tài)系統(tǒng)的架構(gòu)最簡單的框架,sqoop1由client端直接接入hadoop,任務(wù)通過解析生成對應(yīng)的maprecue執(zhí)行。 架構(gòu)導(dǎo)入架構(gòu)導(dǎo)出架構(gòu)導(dǎo)入流程說明以導(dǎo)入為例1)讀取要導(dǎo)入數(shù)據(jù)的表結(jié)構(gòu) 2)讀取參數(shù),設(shè)置好job3)調(diào)用Mapreduce執(zhí)行任務(wù) a.首先要對數(shù)據(jù)進(jìn)行切分 b.寫入范圍,以便讀取 c.讀取范圍參數(shù)(第二步中設(shè)置的參數(shù)) d.創(chuàng)建RecordReader 并從數(shù)據(jù)庫中讀取數(shù)據(jù) e.創(chuàng)建map f .運(yùn)行map 安裝下載地址 sqoop1: sqoop2: 基于CDH的安裝 too simple! CDH在安裝了sqoop2之后就1和2
4、 都有了。安裝原生安裝 a.解壓對應(yīng)壓縮包 b.重命名sqoop-1.4.5-cdh5.4.4/sqoop-env-template.sh 為sqoop-env.sh ,配置以下參數(shù)即可(注意需要有JDK): c.配置環(huán)境變量vi /etc/profile export PATH=$PATH: /opt/sqoop-1.4.5-cdh5.4.4/bin source /etc/profile安裝注意事項(xiàng) 1.數(shù)據(jù)庫驅(qū)動(dòng):在執(zhí)行sqoop命令的client的sqoop lib目錄下面放入驅(qū)動(dòng)jar包即可(CDH默認(rèn)在/opt/cloudera/parcels/CDH/lib/sqoop/lib/
5、目錄),驅(qū)動(dòng)版本使用mysql-connector-java-5.1.32-bin.jar以上。 2.client端JDK版本1.61.7,并且配置環(huán)境變量sqoop工具匯總 sqoop工具選項(xiàng)選項(xiàng)含義說明-connect 指定JDBC連接字符串-connection-manager 指定要使用的連接管理器類-driver 指定要使用的JDBC驅(qū)動(dòng)類-hadoop-mapred-home 指定$HADOOP_MAPRED_HOME路徑-help萬能幫助-password-file設(shè)置用于存放認(rèn)證的密碼信息文件的路徑-P從控制臺(tái)讀取輸入的密碼-password 設(shè)置認(rèn)證密碼-username 設(shè)
6、置認(rèn)證用戶名-verbose打印詳細(xì)的運(yùn)行信息-connection-param-file 可選,指定存儲(chǔ)數(shù)據(jù)庫連接參數(shù)的屬性文件sqoop工具Import 數(shù)據(jù)導(dǎo)入工具import 選項(xiàng)含義說明-append將數(shù)據(jù)追加到HDFS上一個(gè)已存在的數(shù)據(jù)集上-as-avrodatafile將數(shù)據(jù)導(dǎo)入到Avro數(shù)據(jù)文件-as-sequencefile將數(shù)據(jù)導(dǎo)入到SequenceFile-as-textfile將數(shù)據(jù)導(dǎo)入到普通文本文件(默認(rèn))-boundary-query 邊界查詢,用于創(chuàng)建分片(InputSplit)-columns 從表中導(dǎo)出指定的一組列的數(shù)據(jù)-delete-target-dir如果
7、指定目錄存在,則先刪除掉-direct使用直接導(dǎo)入模式(優(yōu)化導(dǎo)入速度)-direct-split-size 分割輸入stream的字節(jié)大小(在直接導(dǎo)入模式下)-fetch-size 從數(shù)據(jù)庫中批量讀取記錄數(shù)-inline-lob-limit 設(shè)置內(nèi)聯(lián)的LOB對象的大小-m,-num-mappers 使用n個(gè)map任務(wù)并行導(dǎo)入數(shù)據(jù)-e,-query 導(dǎo)入的查詢語句-split-by 指定按照哪個(gè)列去分割數(shù)據(jù)-table 導(dǎo)入的源表表名-target-dir 導(dǎo)入HDFS的目標(biāo)路徑-warehouse-dir HDFS存放表的根路徑-where 指定導(dǎo)出時(shí)所使用的查詢條件 press啟用壓縮 pr
8、ession-codec 指定Hadoop的codec方式(默認(rèn)gzip)-null-string 果指定列為字符串類型,使用指定字符串替換值為null的該類列的值-null-non-string 如果指定列為非字符串類型,使用指定字符串替換值為null的該類列的值把mysql中的表復(fù)制到hdfs中導(dǎo)入HDFS默認(rèn)情況下,使用導(dǎo)入語句,直接導(dǎo)入到HDFS當(dāng)前用戶的目錄下面,生成相應(yīng)的表明,文件夾名稱默認(rèn)為表名。默認(rèn)(在行命令的機(jī)器上添加驅(qū)動(dòng)):sqoop import -connect jdbc:mysql:/crxy172:3306/testsqoop -username root -pas
9、sword 123456 -table info指定到入目錄:sqoop import -connect jdbc:mysql:/crxy172:3306/testsqoop -username root -password 123456 -table info target-dir info_dir 如果目錄以及存在,使用-delete-target-dir:sqoop import -connect jdbc:mysql:/crxy172:3306/test -username root -password 123456 -table info -delete-target-dir把mys
10、ql中的表復(fù)制到hdfs中指定map個(gè)數(shù)默認(rèn)啟動(dòng)4個(gè)進(jìn)程導(dǎo)入(map數(shù)量),可以設(shè)置 1表示不并行sqoop import -connect jdbc:mysql:/crxy172:3306/test -username root -password 123456 -table info -m 1同一個(gè)目錄進(jìn)行數(shù)據(jù)追加sqoop import -connect jdbc:mysql:/crxy172:3306/test -username root -password 123456 -table info -m 1 -append sqoop import -connect jdbc:mysq
11、l:/crxy172:3306/test -username root -password 123456 -table info -m 1 -append -check-column id -incremental append -last-value 23把mysql中的表復(fù)制到hdfs中指定條件 注意兩點(diǎn):第一、不能含中文 ;第二、job=CTOsqoop import -connect jdbc:mysql:/crxy172:3306/test -username root -password 123456 -table info -m 1 -append -where job=CTO
12、(可以使用模糊批量匹配)啟用壓縮sqoop import -connect jdbc:mysql:/crxy172:3306/test -username root -password 123456 -table info -m 1 -append -where job like CTO -z (默認(rèn)Gzip壓縮)sqoop import -connect jdbc:mysql:/crxy172:3306/test -username root -password 123456 -table info -m 1 -append -where job like CTO -z pression-c
13、odec press.SnappyCodec (直接指定壓縮編碼)把mysql中的表復(fù)制到hdfs中導(dǎo)入空值處理字符串類型:sqoop import -connect jdbc:mysql:/crxy172:3306/test -username root -password 123456 -table info -m 1 -append -null-string - (不可以,不能是關(guān)鍵字符)sqoop import -connect jdbc:mysql:/crxy172:3306/test -username root -password 123456 -table info -m 1
14、-append -null-string *非字符串類型:sqoop import -connect jdbc:mysql:/crxy172:3306/test -username root -password 123456 -table info -m 1 -append -null-string * -null-non-string =把mysql中的表復(fù)制到hive中Sql導(dǎo)入sqoop import -connect jdbc:mysql:/crxy172:3306/test -username root -password 123456 -query select name,job
15、from info where $CONDITIONS -m 1 -target-dir queryinfo -fields-terminated-by , -split-by id (必須指定-m 、-fields-terminated-by 、-split-by)追加數(shù)據(jù)sqoop import -connect jdbc:mysql:/crxy172:3306/test -username root -password 123456 -table info -hive-import -m 1 sqoop import -connect jdbc:mysql:/crxy172:3306/t
16、est -username root -password 123456 -table info -hive-import -m 1 -fields-terminated-by | (如果數(shù)據(jù)表已經(jīng)存在,并且字段不一樣,指定分隔符時(shí)會(huì)把加到第一列中,不指定時(shí)取mysql第一列id值加到hive中)把mysql中的表復(fù)制到hive中覆蓋數(shù)據(jù)sqoop import -connect jdbc:mysql:/crxy172:3306/test -username root -password 123456 -table info -hive-import -m 1 -fields-terminate
17、d-by | -hive-overwrite (只覆蓋數(shù)據(jù),不覆蓋表結(jié)構(gòu))創(chuàng)建hive表(自定義表名)sqoop import -connect jdbc:mysql:/crxy172:3306/test -username root -password 123456 -table info -hive-import -m 1 -fields-terminated-by | -hive-table info_t -hive-overwrite (如果表已經(jīng)存在,不會(huì)刪除,只能重新定義表名)注意:如果導(dǎo)出過程失敗,需要到HDFS目錄當(dāng)前用戶目錄下將臨時(shí)目錄刪除,hdfs當(dāng)前用戶目錄下不能存在表目
18、錄,可以另外指定-target-dir -delete-target-dir把mysql中的表復(fù)制到hive中復(fù)制mysql的表結(jié)構(gòu)到Hivesqoop create-hive-table -connect jdbc:mysql:/crxy172:3306/test -username root -password 123456 -table info -hive-table users -fields-terminated-by 0001 -lines-terminated-by n (不復(fù)制數(shù)據(jù))導(dǎo)出所有的表到hivesqoop import-all-tables -connect jdb
19、c:mysql:/crxy172:3306/test -username root -password 123456 -hive-import -fields-terminated-by u0001 -lines-terminated-by n 把mysql中的表復(fù)制到HBase選項(xiàng)說明-hbase-table 指定導(dǎo)入到hbase中的表-column-family 創(chuàng)建列族-hbase-row-key 以id字段作為key-hbase-create-table創(chuàng)建hbase表導(dǎo)入hive時(shí),默認(rèn)以主鍵作為key,沒有主鍵使用-split-by,暫時(shí)處理不了聯(lián)合主鍵情況。sqoop impor
20、t -connect jdbc:mysql:/crxy172:3306/test -username root -password 123456 -table info -hbase-create-table -hbase-row-key id -hbase-table info -column-family xxxsqoop工具export 數(shù)據(jù)導(dǎo)出工具export 選項(xiàng)含義說明-validate 啟用數(shù)據(jù)副本驗(yàn)證功能,僅支持單表拷貝,可以指定驗(yàn)證使用的實(shí)現(xiàn)類-validation-threshold 指定驗(yàn)證門限所使用的類-direct使用直接導(dǎo)出模式(優(yōu)化速度)-export-dir 導(dǎo)
21、出過程中HDFS源路徑-m,-num-mappers 使用n個(gè)map任務(wù)并行導(dǎo)出-table 導(dǎo)出的目的表名稱-call 導(dǎo)出數(shù)據(jù)調(diào)用的指定存儲(chǔ)過程名-update-key 更新參考的列名稱,多個(gè)列名使用逗號(hào)分隔-update-mode 指定更新策略,包括:updateonly(默認(rèn))、allowinsert-input-null-string 使用指定字符串,替換字符串類型值為null的列-input-null-non-string 使用指定字符串,替換非字符串類型值為null的列-staging-table 在數(shù)據(jù)導(dǎo)出到數(shù)據(jù)庫之前,數(shù)據(jù)臨時(shí)存放的表名稱-clear-staging-tabl
22、e清除工作區(qū)中臨時(shí)存放的數(shù)據(jù)-batch使用批量模式導(dǎo)出把HDFS中的表數(shù)據(jù)復(fù)制到mysql中導(dǎo)出到mysql(默認(rèn)使用逗號(hào)作為分隔)直接導(dǎo)出,導(dǎo)出時(shí)字段需要一一對應(yīng)sqoop export -connect jdbc:mysql:/crxy172:3306/test -username root -password 123456 -table info -export-dir export亂碼問題sqoop export -connect jdbc:mysql:/crxy172:3306/test?useUnicode=true&characterEncoding=utf-8 -userna
23、me root -password 123456 -table info -export-dir export指定map數(shù)sqoop export -connect jdbc:mysql:/crxy172:3306/test?useUnicode=true&characterEncoding=utf-8 -username root -password 123456 -table info -export-dir export -m 1把HDFS中的表數(shù)據(jù)復(fù)制到mysql中插入和更新如果存在就更新,不存在就插入sqoop export -connect jdbc:mysql:/crxy172:
24、3306/test?useUnicode=true&characterEncoding=utf-8 -username root -password 123456 -table info -export-dir export -m 1 -update-key id -update-mode allowinsert指定分隔符(和導(dǎo)入?yún)^(qū)別開來)導(dǎo)入導(dǎo)出的事務(wù)是以Mapper任務(wù)為單位。注意:1-fields-terminated-by導(dǎo)入數(shù)據(jù)時(shí)(import)字段分割、行分割 2 -input-fields-terminated-by解析HDFS上面的數(shù)據(jù)到數(shù)據(jù)庫時(shí)使用參數(shù)把HDFS中的表數(shù)據(jù)復(fù)制
25、到mysql中從HBase到mysql沒有直接導(dǎo)出方案。只能使用以下步驟,先通過mapreduce寫入到HDFS在通過export工具導(dǎo)入到mysql。導(dǎo)出空值處理-input-null-string string類型使用參數(shù)-input-null-non-string 非string類型使用參數(shù)其他工具使用Codegen編譯jar包和record類sqoop codegen -connect jdbc:mysql:/crxy172:3306/test -username root -password 123456 -table info -bindir sqoopjar直接使用已經(jīng)編譯好的類
26、sqoop import -connect jdbc:mysql:/crxy172:3306/test -username root -password 123456 -table info -class-name info -jar-file info.jar其他工具使用Codegen導(dǎo)出過程生成的和Codegen生成代碼區(qū)別:a導(dǎo)出過程生成代碼純屬于副產(chǎn)品,無法控制,默認(rèn)和表名一樣bCodegen可以指定生成代碼的參數(shù),可以用來重新生成導(dǎo)入過程的源代碼主要作用:a) 可以將需要導(dǎo)入的數(shù)據(jù)事先序列化到HDFS中 b) 檢查數(shù)據(jù)表,采用最合適的數(shù)據(jù)類型 c) 如果事先已經(jīng)將數(shù)據(jù)序列化到了HDFS,可以采用該方式讀取出來其他工具使用Eval直接使用sql查詢mysqlsqoop eval -connect jdbc:mysql:/crxy172:3306/test -username
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國基礎(chǔ)護(hù)理操作模型行業(yè)市場發(fā)展監(jiān)測及投資潛力預(yù)測報(bào)告
- 2025年 湖北公務(wù)員考試行測試題行政執(zhí)法類附答案
- 2025年 廣西醫(yī)科大學(xué)第二附屬醫(yī)院招聘筆試試題附答案
- 2023-2029年中國特種水產(chǎn)行業(yè)市場深度研究及投資戰(zhàn)略咨詢報(bào)告
- 2025年 北海市城市開發(fā)投資集團(tuán)有限公司招聘考試筆試試題附答案
- 清潔生產(chǎn)管理清潔生產(chǎn)審核報(bào)告染料廠
- 2025年中國家居門簾行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報(bào)告
- 2025年水飛薊素項(xiàng)目節(jié)能評估報(bào)告(節(jié)能專)
- 中國云服務(wù)行業(yè)市場發(fā)展現(xiàn)狀及前景趨勢與投資分析研究報(bào)告(2024-2030)
- 2025年中國布邊紗夾壓腳行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報(bào)告
- 2023年遼寧省高中學(xué)業(yè)水平合格性考試物理試卷真題(答案詳解)
- 一例壓力性損傷的個(gè)案護(hù)理
- 初高中生物銜接課件
- 高壓電動(dòng)機(jī)預(yù)防性試驗(yàn)課件
- 2023年上海市青浦區(qū)社區(qū)工作者招聘考試真題
- 2022-2023學(xué)年北京市西城區(qū)部編版五年級下冊期末考試語文試卷
- 南平市消防訓(xùn)練基地項(xiàng)目環(huán)境影響報(bào)告
- 副舟骨損傷查房
- 女性領(lǐng)導(dǎo)力智慧樹知到課后章節(jié)答案2023年下山東女子學(xué)院
- 沖壓成型精密五金機(jī)構(gòu)件生產(chǎn)QC工程圖
- 工程量確認(rèn)單范本
評論
0/150
提交評論