Sqoop官方中文手冊_第1頁
Sqoop官方中文手冊_第2頁
Sqoop官方中文手冊_第3頁
Sqoop官方中文手冊_第4頁
Sqoop官方中文手冊_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Sqoop官方中文手冊Sqoop中文手冊1.概述檔主要對SQOOP的使用進行了說明,參考內容主要來自于ClouderaSQOOP的官方文檔。為了用中文更清楚明白地描述各參數的使用含義,檔幾乎所有參數使用說明都經過了我的實際驗證而得到。2.codegen將關系數據庫表映射為一個java文件、javaclass類、以及相關的jar包,1、將數據庫表映射為一個Java文件,在該Java文件中對應有表的各個字段。2、生成的Jar和class文件在metastore功能使用時會用至限基礎語句:sqoopcodegen-connectjdbc:mysql:/localhost:3306/hive-user

2、nameroot-password123456千ableTBLS2參數說明Hbindir指定生成的java文件、編譯成的class文件及將生成文件打包為JAR的JAR包文件輸-class-name-outdir生成的java文件存放路徑卞ackage-name包名,如,則會生成cn和cnnic兩級目錄,生成的文件就存放在cnnic目錄里-input-null-non-string在生成的java文件中,可以將null字符串設為想要設定的值-input-null-string同上,設定時,最好與上面的屬性一起設置,且設置同樣的值。-map-column-java數據庫字段在生成的java文件中會

3、映射為各種屬性,且默認的數據類型與數據庫類型保持對應,比如數據庫中某字段的類型為bigint,則在Java文件中的數據類型為long型,通過這個屬性,可以改變數據庫字段在java中映射的數據類型,格式如:-map-column-javaDB_ID=String,id=Integer-null-non-string在當成的java文件中,比如TBL_ID=null?IInull,通過這外屬性設置可以將null字符串設置為其它值如ddd,TBL_ID=null?|ddd|-ndll-string同上,使雨的時候最好和上面的屬性一起用,且設置為相同的值-lable對應關系數據庫的表名,生成的java

4、文件中的各屬性與該表的各字段一一對應。3. create-hive-table生成與關系數據庫表的表結構對應的HIVE表基礎語句:sqoopcreate-hive-table-connectjdbc:mysql:/localhost:3306/hive-usernameroot-password123456千ableTBLS-hive-tableh_tbls2參數-hive-homeHive的安裝目錄,可以通過該參數覆蓋掉默認的hive目錄-hive-overwrite覆蓋掉在hive表中已經存在的數據-create-hive-table默認是false,如果目標表已經存在了,那么創(chuàng)建任務會失

5、敗-hive-table后面接要創(chuàng)建的hive表dable指定關系數據庫表名4. eval可以快速地使用SQL語句對關系數據庫進行操作,這可以使得在使用import這種工具進行數據導入的時候,可以預先了解相關的SQL語句是否正確,并能將結果顯示在控制臺。查詢示例:sqoopeval-connectjdbc:mysql:/localhost:3306/hive精選公文范文,管理類,工作總結類,工作計劃類文檔,感謝閱讀下載3-usernameroot-password123456-querySELECT*FROMtblsLIMIT10數據插入示例:sqoopeval123456TBLS2hadoo

6、pTABLE-connectjdbc:mysql:/localhost:3306/hive-usernameroot-password-e-INSERTINTOVALUES(100,1375170308,1,0,',0,1,'guest','MANAGEDabc','ddd')|-e>-query這兩個參數經過測試,比如后面分別接查詢和插入SQL語句,皆可運行無誤,如上。5. export從hdfs中導數據到關系數據庫中sqoopexport-connectjdbc:mysql:/localhost:3306/hive-userna

7、meroot-password123456-lableTBLS2-export-dirsqoop/test參數說明-direct快速模式,利用了數據庫的導入工具,如mysql的mysqlimport,可以比jdbc連接的方式更為高效的將數據導入到關系數據庫中。-export-dir存放數據的HDFS的源目錄-m,-num-mappers啟動N個map來精選公文范文,管理類,工作總結類,工作計劃類文檔,感謝閱讀下載4并行導入數據,默認是4個,最好不要將數字設置為高于集群的最大Map數依ble要導入到的關系數據庫表-update-key后面接條件列名,通過該參數,可以將關系數據庫中已經存在的數據進

8、行更新操作,類似于關系數據庫中的update操作-update-mode更新模式,有兩個值updateonly和默認的allowinsert,該參數只能是在關系數據表里不存在要導入的記錄時才能使用,比如要導入的hdfs中有一條id=1的記錄,如果在表里已經有一條記錄id=2,那么更新會失敗。-input-null-string可選參數,如果沒有指定,則字符串null將被使用Tnput-null-non-string可選參數,如果沒有指定,則字符串null將被使用-staging-table該參數是用來保證在數據導入關系數據庫表的過程中事務安全性的,因為在導入的過程中可能會有多個事務,那么一個事

9、務失敗會影響到其它事務,比如導入的數據會出現錯誤或出現重復的記錄等等情況,那么通過該精選公文范文,管理類,工作總結類,工作計劃類文檔,感謝閱讀下載5參數可以避免這種情況。創(chuàng)建一個與導入目標表同樣的數據結構,保留該表為空在運行數據導入前,所有事務會將結果先存放在該表中,然后最后該表通過一次事務將結果寫入到目標表中。-clear-staging-table如果該staging-table非空,則通過該參數可以在運行導入前清除staging-table里的數據。-batch該模式用于執(zhí)行基本語句6.import將數據庫表的數據導入到hive中,如果在hive中沒有對應的表,則自動生成與數據庫表名相同

10、的表。sqoopimport-connectjdbc:mysql:/localhost:3306/hive-usernameroot-password123456-lableuser-split-byid-hive-importwplit-by指定數據庫表中的主鍵字段名,在這里為id。參數說明-append將數據追加到hdfs中已經存在的dataset中。使用該參數,sqoop將把數據先導入到一個臨時目錄中,然后重新給文件命名到一個正式的目錄中,以避免和該目錄中已存在的文件重名。-as-avrodatafile將數據導入到一個Avro數據文件中-as-sequencefile將數據導入至U個s

11、equence文件中-as-textfile將數據導入到一個普通文件中,生成該文件后,可以在hive中通過sql語句查詢出結果。-boundary-query邊界查詢,也就是在導入前先通過SQL查詢得到一個結果集,然后導入的數據就是該結果集內的數據,格式如:-boundary-query?selectid,creationdatefrompersonwhereid=3',表示導入的數據為id=3的記錄,或者selectmin(),max()from,注意查詢的字段中不能有數據類型為字符串的字段,否則會報錯:InvalidvalueforgetLong()目前問題原因還未知-column

12、s指定要導入的字段值,格式如:-columnsid,usernamedirect直接導入模式,使用的是關系數據庫自帶的導入導出工具。官網上是說這樣導入會更快-direct-split-size在使用上面direct直接導入的基礎上,對導入的流按字節(jié)數分塊,特別是使用直連模式從PostgreSQL導入數據的時候,可以將一個到達設定大小的文件分為幾個獨立的文件。Tnline-lob-limit設定大對象數據類型的最大值-m,-num-mappers啟動N個map來并行導入數據,默認是4個,最好不要將數字設置為高于集群的節(jié)點數-query,-e從查詢結果中導入數據,該參數使用時必須指定darget-

13、dir、-hive-table,在查詢語句中一定要有where條件且在where條件中需要包含$CONDITIONS,示例:-query?select*frompersonwhere$CONDITIONS?target-dir/user/hive/warehouse/person-hive-tableperson-split-by表的歹U名,用來切分工作單元,一般后面跟主鍵IDCable關系數據庫表名,數據從該表中獲取4arget-dir指定hdfs路徑warehouse-dir與4arget-dir不能同時使用,指定數據導入的存放目錄,適用于hdfs導入,不適合導入hive目錄-where從

14、關系數據庫導入數據時的查詢條件,示例:-where?id=2'-z,-compress壓縮參數,默認情況下數據是沒被壓縮的,通過該參數可以使用gzip壓縮算法對數據進行壓縮,適用于SequenceFile,text文件,和Avro文件-compression-codecHadoop壓縮編碼,默認是gzip-null-string可選參數,如果沒有指定,則字符串null將被使用-null-non-string可選參數,如果沒有指定,則字符串null將被使用增量導入參數說明-check-column(col)用來作為判斷的列名,如id-incremental(mode)append:追力口

15、,比如對大于last-value指定的值之后的記錄進行追加導入。lastmodified:最后的修改時間,追加last-value指定的日期之后的記錄-last-value(value)指定自從上次導入后列的最大值,也可以自己設定某一值對incremental參數,如果是以日期作為追加導入的依據,則使用lastmodified,否則就使用append值。7.import-all-tables將數據庫里的所有表導入到HDFS中,每個表在hdfs中都對應一個獨立的目錄。sqoopimport-all-tables-connectjdbc:mysql:/localhost:3306/testsqoo

16、pimport-all-tables-connectjdbc:mysql:/localhost:3306/test-hive-import參數說明- as-avrodatafile同import參數- as-sequencefile同import參數- as-textfile同import參數-direct同import參數-direct-split-size同import參數-inline-lob-limit同import參數-m,中um-mappers同import參數warehouse-dir同import參數-z,-compress同import參數-compression-codec

17、同import參數.job用來生成個sqoop的任務)生成后)該任務并不執(zhí)行,除非使用命令執(zhí)行該任務sqoopjob參數說明-create生成一個job)示例如:sqoopjob-createmyjobimport-connectjdbc:mysql:localhost:3306/testCableperson-delete刪除一個jobsqoopjob-deletemyjob-exec執(zhí)行一個jobsqoopjob-execmyjob5elp顯示幫助說明-list顯示所有的jobsqoopjob-listeta-connect用來連接metastore服務)示例如:eta-connectjd

18、bc:hsqldb:hsql:/localhost:16000/sqoop-show顯示一個job的各種參數sqoopjob-showmyjobverbose打E|3命令運行時的詳細信息9.list-databases打印出關系數據庫所有的數據庫名sqooplist-databases-connectjdbc:mysql:/localhost:3306/-usernameroot-password123456打印出關系數據庫某一數據庫的所有表名sqooplist-tables-connectjdbc:mysql:/localhost:3306/zihou-usernameroot-passwo

19、rd12345611.精選公文范文,管理類,工作總結類,工作計劃類文檔,感謝閱讀下載11merge將HDFS中不同目錄下面的§據合在一起,并存放在指定的目錄中,示例如:sqoopmerge-new-data/test/p1/person-onto/test/p2/persontarget-dir/test/mergedjar-file/opt/data/sqoop/person/-class-namePerson-merge-keyid其中,-class-nam斯指定的class名是對應于中的Person類,而是通過Codegen生成的參數-new-dataHdfs中存放數據的一個目

20、錄,該目錄中的數據是希望在合并后能優(yōu)先保留的,原則上一般是存放越新數據的目錄就對應這個參數。-ontoHdfs中存放數據的一個目錄,該目錄中的數據是希望在合并后能被更新數據替換掉的,原則上一般是存放越舊數據的目錄就對應這個參數。-merge-key合并鍵,一般是主鍵IDjar-file合并時引入的jar包,該jar包是通過Codegen工具生成的jar包-class-name對應的表名或對象名,該class類是包含在jar包中的。target-dir合并后的數據在精選公文范文,管理類,工作總結類,工作計劃類文檔,感謝閱讀下載12HDFS里的存放目錄12.metastore記錄sqoopjob的

21、元數據信息,如果不啟動metastore實例,則默認的元數據存儲目錄為:/.sqoop,如果要更改存儲目錄,可以在配置文件中進行更改。metastore實例啟動:sqoopmetastore-shutdown關閉一個運行的metastore實例13.version顯示sqoop版本信息語句:sqoopversion14.help打印sqoop幫助信息語句:sqoophelp15.公共參數Hive參數參數說明-hive-delims-replacement用自定義的字符串替換掉數據中的n,r,and01等-hive-drop-import-delims在導入數據到hive中時,去掉數據中n,r和

22、01這樣的字符-map-column-hive生成hive表時,可以更改生成字段的數據類型,格式如:map-column-hiveTBL_ID=String,LAST_ACCESS_TIME=string-hive-partition-key創(chuàng)建分區(qū),后面直接精選公文范文,管理類,工作總結類,工作計劃類文檔,感謝閱讀下載跟分區(qū)名即可,創(chuàng)建完畢后,通過describe表名可以看到分區(qū)名,默認為string型-hive-partition-value該值是在導入數據到hive中時,與-hive-partition-key設定的key對應的value值。-hive-homeHive的安裝目錄,可以通

23、過該參數覆蓋掉默認的hive目錄-hive-import將數據從關系數據庫中導入至IIhive表中-hive-overwrite覆蓋掉在hive表中已經存在的數據-create-hive-table默認是false,如果目標表已經存在了,那么創(chuàng)建任務會失敗-hive-table后面接要創(chuàng)建的hive表Cable指定關系數據庫表名數據庫連接參數參數說明-connectJdcb連接url,示例如:-connectjdbc:mysql:/localhost:3306/hive-connection-manager指定要使用的連接管理類-driver數據庫驅動類-hadoop-homeHadoop根目

24、錄-help打印幫助信息-P從控制端讀取密碼-passwordJdbcurl中的數據庫連接密碼-usernameJdbcurl中的數據庫連接用戶名-verbose在控制臺打印出詳細信息-connection-param-file一個記錄著數據庫連接參數的文件文件輸出參數用于import場景。示例如:sqoopimport-connectjdbc:mysql:/localhost:3306/test-usernameroot-Pdableperson-split-byid-check-columnid-incrementalappend-last-value1-enclosed-byI-esca

25、ped-by#fields-terminated-by.參數說明-enclosed-by給字段值前后加上指定的字符,比如雙引號,示例:-enclosed-byII?,顯示例子:II3”,IIjimsssIIescdipejd-by給雙引號作轉義處理,如字段值為惻試I;經過-處理后,在hdfs中的顯示值為:I測試II,對單引號無效fields-terminated-by設定每個字段是以什么符號作為結束的,默認是逗號,也可以改為其它符號,如句號.,示例如:fields-terminated-by.Tines-terminated-by設定每條記錄行之間的分隔符,默認是換行,-mysql-delimitersMysql默認的分隔符設置,字段之間以,隔開,行之間以換行n隔開,默認轉義符號是,字段值以單引號包含起來。-optionally-enclosed-byenclosed-by是強制給每個字段值前后都加上指定的符號,而-optionally-enclosed-by只是給帶有雙弓I號或單引號的字段值加上指定的符號,故叫可選的。示例如:-optionally-enclosed-by?$'文件輸入參數對數據格+的解析,用于export場景,與文件輸出參數

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論