Sqoop中文手冊(cè)_第1頁(yè)
Sqoop中文手冊(cè)_第2頁(yè)
Sqoop中文手冊(cè)_第3頁(yè)
Sqoop中文手冊(cè)_第4頁(yè)
Sqoop中文手冊(cè)_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Sqoop中文手冊(cè)8,455瀏覽 1條回復(fù) 子猴:Sqoop在我們的實(shí)際工作中有一些應(yīng)用,為了對(duì)Sqoop的使用有個(gè)更全面的了解,于是我花了一些時(shí)間將Sqoop的使用整理成了一份中文手冊(cè),我自認(rèn)還是非常全面的,覆蓋到了Sqoop所有的方面。雖然對(duì)每一個(gè)用法,我都是盡可能地先經(jīng)過(guò)測(cè)試然后再得出結(jié)論,但可能難免會(huì)有謬誤,不過(guò)總的來(lái)說(shuō)希望能對(duì)使用Sqoop的朋友有點(diǎn)幫助吧。1.     概述本文檔主要對(duì)SQOOP的使用進(jìn)行了說(shuō)明,參考內(nèi)容主要來(lái)自于Cloudera SQOOP的官方文檔。為了用中文更清楚明白地描述各參數(shù)的使用含義,本文檔幾乎所有參數(shù)使用說(shuō)明都經(jīng)

2、過(guò)了我的實(shí)際驗(yàn)證而得到。2.     codegen將關(guān)系數(shù)據(jù)庫(kù)表映射為一個(gè)java文件、java class類、以及相關(guān)的jar包,作用主要是兩方面:1、  將數(shù)據(jù)庫(kù)表映射為一個(gè)Java文件,在該Java文件中對(duì)應(yīng)有表的各個(gè)字段。2、  生成的Jar和class文件在metastore功能使用時(shí)會(huì)用到?;A(chǔ)語(yǔ)句:sqoop codegen connect jdbc:mysql:/localhost:3306/hive username root password 123456 table TBLS2 參數(shù)說(shuō)明bindir

3、<dir>指定生成的java文件、編譯成的class文件及將生成文件打包為JAR的JAR包文件輸出路徑class-name <name>設(shè)定生成的Java文件指定的名稱outdir <dir>生成的java文件存放路徑package-name<name>包名,如nic,則會(huì)生成cn和cnnic兩級(jí)目錄,生成的文件(如java文件)就存放在cnnic目錄里input-null-non-string<null-str>在生成的java文件中,可以將null字符串設(shè)為想要設(shè)定的值(比如空字符串)input-null-string<nu

4、ll-str>同上,設(shè)定時(shí),最好與上面的屬性一起設(shè)置,且設(shè)置同樣的值(比如空字符串等等)。map-column-java<arg>數(shù)據(jù)庫(kù)字段在生成的java文件中會(huì)映射為各種屬性,且默認(rèn)的數(shù)據(jù)類型與數(shù)據(jù)庫(kù)類型保持對(duì)應(yīng),比如數(shù)據(jù)庫(kù)中某字段的類型為bigint,則在Java文件中的數(shù)據(jù)類型為long型,通過(guò)這個(gè)屬性,可以改變數(shù)據(jù)庫(kù)字段在java中映射的數(shù)據(jù)類型,格式如:map-column-java DB_ID=String,id=Integernull-non-string<null-str>在生成的java文件中,比如TBL_ID=null?”null”:”,通過(guò)

5、這個(gè)屬性設(shè)置可以將null字符串設(shè)置為其它值如ddd,TBL_ID=null?”ddd”:”null-string<null-str>同上,使用的時(shí)候最好和上面的屬性一起用,且設(shè)置為相同的值table <table-name>對(duì)應(yīng)關(guān)系數(shù)據(jù)庫(kù)的表名,生成的java文件中的各屬性與該表的各字段一一對(duì)應(yīng)。 3.     create-hive-table生成與關(guān)系數(shù)據(jù)庫(kù)表的表結(jié)構(gòu)對(duì)應(yīng)的HIVE表基礎(chǔ)語(yǔ)句:sqoop create-hive-table connect jdbc:mysql:/localhost:3306/hiv

6、e -username root -password 123456 table TBLS hive-table h_tbls2參數(shù)說(shuō)明hive-home <dir>Hive的安裝目錄,可以通過(guò)該參數(shù)覆蓋掉默認(rèn)的hive目錄hive-overwrite覆蓋掉在hive表中已經(jīng)存在的數(shù)據(jù)create-hive-table默認(rèn)是false,如果目標(biāo)表已經(jīng)存在了,那么創(chuàng)建任務(wù)會(huì)失敗hive-table后面接要?jiǎng)?chuàng)建的hive表table指定關(guān)系數(shù)據(jù)庫(kù)表名 4.     eval可以快速地使用SQL語(yǔ)句對(duì)關(guān)系數(shù)據(jù)庫(kù)進(jìn)行操作,這可以使得在使用im

7、port這種工具進(jìn)行數(shù)據(jù)導(dǎo)入的時(shí)候,可以預(yù)先了解相關(guān)的SQL語(yǔ)句是否正確,并能將結(jié)果顯示在控制臺(tái)。查詢示例:sqoop eval connect jdbc:mysql:/localhost:3306/hive -username root -password 123456 -query “SELECT * FROM tbls LIMIT 10數(shù)據(jù)插入示例:sqoop eval connect jdbc:mysql:/localhost:3306/hive -username root -password 123456 -e “INSERT INTO TBLS2VALUES(100,137517

8、0308,1,0,hadoop,0,1,guest,MANAGED_TABLE,abc,ddd)”-e、-query這兩個(gè)參數(shù)經(jīng)過(guò)測(cè)試,比如后面分別接查詢和插入SQL語(yǔ)句,皆可運(yùn)行無(wú)誤,如上。5.     export從hdfs中導(dǎo)數(shù)據(jù)到關(guān)系數(shù)據(jù)庫(kù)中sqoop export connect jdbc:mysql:/localhost:3306/hive username root password123456  table TBLS2 export-dir sqoop/test參數(shù)說(shuō)明direct快速模式,利用了數(shù)據(jù)庫(kù)的導(dǎo)入工具,如mysql的

9、mysqlimport,可以比jdbc連接的方式更為高效的將數(shù)據(jù)導(dǎo)入到關(guān)系數(shù)據(jù)庫(kù)中。export-dir <dir>存放數(shù)據(jù)的HDFS的源目錄-m,num-mappers <n>啟動(dòng)N個(gè)map來(lái)并行導(dǎo)入數(shù)據(jù),默認(rèn)是4個(gè),最好不要將數(shù)字設(shè)置為高于集群的最大Map數(shù)table <table-name>要導(dǎo)入到的關(guān)系數(shù)據(jù)庫(kù)表update-key <col-name>后面接條件列名,通過(guò)該參數(shù),可以將關(guān)系數(shù)據(jù)庫(kù)中已經(jīng)存在的數(shù)據(jù)進(jìn)行更新操作,類似于關(guān)系數(shù)據(jù)庫(kù)中的update操作update-mode <mode>更新模式,有兩個(gè)值updateo

10、nly和默認(rèn)的allowinsert,該參數(shù)只能是在關(guān)系數(shù)據(jù)表里不存在要導(dǎo)入的記錄時(shí)才能使用,比如要導(dǎo)入的hdfs中有一條id=1的記錄,如果在表里已經(jīng)有一條記錄id=2,那么更新會(huì)失敗。input-null-string <null-string>可選參數(shù),如果沒(méi)有指定,則字符串null將被使用input-null-non-string <null-string>可選參數(shù),如果沒(méi)有指定,則字符串null將被使用staging-table <staging-table-name>該參數(shù)是用來(lái)保證在數(shù)據(jù)導(dǎo)入關(guān)系數(shù)據(jù)庫(kù)表的過(guò)程中事務(wù)安全性的,因?yàn)樵趯?dǎo)入的過(guò)程中可

11、能會(huì)有多個(gè)事務(wù),那么一個(gè)事務(wù)失敗會(huì)影響到其它事務(wù),比如導(dǎo)入的數(shù)據(jù)會(huì)出現(xiàn)錯(cuò)誤或出現(xiàn)重復(fù)的記錄等等情況,那么通過(guò)該參數(shù)可以避免這種情況。創(chuàng)建一個(gè)與導(dǎo)入目標(biāo)表同樣的數(shù)據(jù)結(jié)構(gòu),保留該表為空在運(yùn)行數(shù)據(jù)導(dǎo)入前,所有事務(wù)會(huì)將結(jié)果先存放在該表中,然后最后由該表通過(guò)一次事務(wù)將結(jié)果寫入到目標(biāo)表中。clear-staging-table如果該staging-table非空,則通過(guò)該參數(shù)可以在運(yùn)行導(dǎo)入前清除staging-table里的數(shù)據(jù)。batch該模式用于執(zhí)行基本語(yǔ)句(暫時(shí)還不太清楚含義) 6.     import將數(shù)據(jù)庫(kù)表的數(shù)據(jù)導(dǎo)入到hive中,如果在hiv

12、e中沒(méi)有對(duì)應(yīng)的表,則自動(dòng)生成與數(shù)據(jù)庫(kù)表名相同的表。sqoop import connect jdbc:mysql:/localhost:3306/hive username root password123456 table user split-by id hive-importsplit-by指定數(shù)據(jù)庫(kù)表中的主鍵字段名,在這里為id。參數(shù)說(shuō)明append將數(shù)據(jù)追加到hdfs中已經(jīng)存在的dataset中。使用該參數(shù),sqoop將把數(shù)據(jù)先導(dǎo)入到一個(gè)臨時(shí)目錄中,然后重新給文件命名到一個(gè)正式的目錄中,以避免和該目錄中已存在的文件重名。as-avrodatafile將數(shù)據(jù)導(dǎo)入到一個(gè)Avro數(shù)據(jù)文件中

13、as-sequencefile將數(shù)據(jù)導(dǎo)入到一個(gè)sequence文件中as-textfile將數(shù)據(jù)導(dǎo)入到一個(gè)普通文本文件中,生成該文本文件后,可以在hive中通過(guò)sql語(yǔ)句查詢出結(jié)果。boundary-query <statement>邊界查詢,也就是在導(dǎo)入前先通過(guò)SQL查詢得到一個(gè)結(jié)果集,然后導(dǎo)入的數(shù)據(jù)就是該結(jié)果集內(nèi)的數(shù)據(jù),格式如:boundary-query select id,creationdate from person where id = 3,表示導(dǎo)入的數(shù)據(jù)為id=3的記錄,或者select min(<split-by>), max(<split-by

14、>) from <table name>,注意查詢的字段中不能有數(shù)據(jù)類型為字符串的字段,否則會(huì)報(bào)錯(cuò):java.sql.SQLException: Invalid value forgetLong()目前問(wèn)題原因還未知 columns<col,col,col>指定要導(dǎo)入的字段值,格式如:columns id,usernamedirect直接導(dǎo)入模式,使用的是關(guān)系數(shù)據(jù)庫(kù)自帶的導(dǎo)入導(dǎo)出工具。官網(wǎng)上是說(shuō)這樣導(dǎo)入會(huì)更快direct-split-size在使用上面direct直接導(dǎo)入的基礎(chǔ)上,對(duì)導(dǎo)入的流按字節(jié)數(shù)分塊,特別是使用直連模式從PostgreSQL導(dǎo)入數(shù)據(jù)的

15、時(shí)候,可以將一個(gè)到達(dá)設(shè)定大小的文件分為幾個(gè)獨(dú)立的文件。inline-lob-limit設(shè)定大對(duì)象數(shù)據(jù)類型的最大值-m,num-mappers啟動(dòng)N個(gè)map來(lái)并行導(dǎo)入數(shù)據(jù),默認(rèn)是4個(gè),最好不要將數(shù)字設(shè)置為高于集群的節(jié)點(diǎn)數(shù)query,-e<statement>從查詢結(jié)果中導(dǎo)入數(shù)據(jù),該參數(shù)使用時(shí)必須指定target-dir、hive-table,在查詢語(yǔ)句中一定要有where條件且在where條件中需要包含$CONDITIONS,示例:query select * from person where $CONDITIONS target-dir/user/hive/warehouse/p

16、erson hive-table personsplit-by<column-name>表的列名,用來(lái)切分工作單元,一般后面跟主鍵IDtable <table-name>關(guān)系數(shù)據(jù)庫(kù)表名,數(shù)據(jù)從該表中獲取target-dir <dir>指定hdfs路徑warehouse-dir <dir>與target-dir不能同時(shí)使用,指定數(shù)據(jù)導(dǎo)入的存放目錄,適用于hdfs導(dǎo)入,不適合導(dǎo)入hive目錄where從關(guān)系數(shù)據(jù)庫(kù)導(dǎo)入數(shù)據(jù)時(shí)的查詢條件,示例:where id = 2-z,compress壓縮參數(shù),默認(rèn)情況下數(shù)據(jù)是沒(méi)被壓縮的,通過(guò)該參數(shù)可以使用gzip壓

17、縮算法對(duì)數(shù)據(jù)進(jìn)行壓縮,適用于SequenceFile, text文本文件, 和Avro文件compression-codecHadoop壓縮編碼,默認(rèn)是gzipnull-string <null-string>可選參數(shù),如果沒(méi)有指定,則字符串null將被使用null-non-string<null-string>可選參數(shù),如果沒(méi)有指定,則字符串null將被使用增量導(dǎo)入?yún)?shù)說(shuō)明check-column (col)用來(lái)作為判斷的列名,如idincremental (mode)append:追加,比如對(duì)大于last-value指定的值之后的記錄進(jìn)行追加導(dǎo)入。lastmodif

18、ied:最后的修改時(shí)間,追加last-value指定的日期之后的記錄last-value (value)指定自從上次導(dǎo)入后列的最大值(大于該指定的值),也可以自己設(shè)定某一值對(duì)incremental參數(shù),如果是以日期作為追加導(dǎo)入的依據(jù),則使用lastmodified,否則就使用append值。7.     import-all-tables將數(shù)據(jù)庫(kù)里的所有表導(dǎo)入到HDFS中,每個(gè)表在hdfs中都對(duì)應(yīng)一個(gè)獨(dú)立的目錄。sqoop import-all-tables connect jdbc:mysql:/localhost:3306/testsqoop imp

19、ort-all-tables connect jdbc:mysql:/localhost:3306/test hive-import 參數(shù)說(shuō)明as-avrodatafile同import參數(shù)as-sequencefile同import參數(shù)as-textfile同import參數(shù)direct同import參數(shù)direct-split-size <n>同import參數(shù)inline-lob-limit <n>同import參數(shù)-m,num-mappers <n>同import參數(shù)warehouse-dir <dir>同import參數(shù)-z,

20、compress同import參數(shù)compression-codec同import參數(shù) 8.     job用來(lái)生成一個(gè)sqoop的任務(wù),生成后,該任務(wù)并不執(zhí)行,除非使用命令執(zhí)行該任務(wù)。sqoop job參數(shù)說(shuō)明create <job-id>生成一個(gè)job,示例如:sqoop job create myjob  import connectjdbc:mysql:/localhost:3306/test tableperson delete <job-id>刪除一個(gè)jobsqoop job delete

21、 myjobexec <job-id>執(zhí)行一個(gè)jobsqoop job exec myjobhelp顯示幫助說(shuō)明list顯示所有的jobsqoop job listmeta-connect <jdbc-uri>用來(lái)連接metastore服務(wù),示例如:meta-connect jdbc:hsqldb:hsql:/localhost:16000/sqoopshow <job-id>顯示一個(gè)job的各種參數(shù)sqoop job show myjobverbose打印命令運(yùn)行時(shí)的詳細(xì)信息 9.     list-dat

22、abases打印出關(guān)系數(shù)據(jù)庫(kù)所有的數(shù)據(jù)庫(kù)名sqoop list-databases connect jdbc:mysql:/localhost:3306/ -username root -password 12345610.             list-tables打印出關(guān)系數(shù)據(jù)庫(kù)某一數(shù)據(jù)庫(kù)的所有表名sqoop list-tables connect jdbc:mysql:/localhost:3306/zihou -username root -password 12

23、345611.             merge將HDFS中不同目錄下面的數(shù)據(jù)合在一起,并存放在指定的目錄中,示例如:sqoop merge new-data /test/p1/person onto /test/p2/person target-dir /test/merged jar-file /opt/data/sqoop/person/Person.jar class-name Person merge-key id其中,class-name所指定的class名是對(duì)

24、應(yīng)于Person.jar中的Person類,而Person.jar是通過(guò)Codegen生成的參數(shù)說(shuō)明new-data <path>Hdfs中存放數(shù)據(jù)的一個(gè)目錄,該目錄中的數(shù)據(jù)是希望在合并后能優(yōu)先保留的,原則上一般是存放越新數(shù)據(jù)的目錄就對(duì)應(yīng)這個(gè)參數(shù)。onto <path>Hdfs中存放數(shù)據(jù)的一個(gè)目錄,該目錄中的數(shù)據(jù)是希望在合并后能被更新數(shù)據(jù)替換掉的,原則上一般是存放越舊數(shù)據(jù)的目錄就對(duì)應(yīng)這個(gè)參數(shù)。merge-key <col>合并鍵,一般是主鍵IDjar-file <file>合并時(shí)引入的jar包,該jar包是通過(guò)Codegen工具生成的jar包c(diǎn)l

25、ass-name <class>對(duì)應(yīng)的表名或?qū)ο竺?,該class類是包含在jar包中的。target-dir <path>合并后的數(shù)據(jù)在HDFS里的存放目錄 12.             metastore記錄sqoop job的元數(shù)據(jù)信息,如果不啟動(dòng)metastore實(shí)例,則默認(rèn)的元數(shù)據(jù)存儲(chǔ)目錄為:/.sqoop,如果要更改存儲(chǔ)目錄,可以在配置文件sqoop-site.xml中進(jìn)行更改。metastore實(shí)例啟動(dòng):sqoop metast

26、ore 參數(shù)說(shuō)明shutdown關(guān)閉一個(gè)運(yùn)行的metastore實(shí)例13.             version顯示sqoop版本信息語(yǔ)句:sqoop version14.             help打印sqoop幫助信息語(yǔ)句:sqoop help15.       &#

27、160;     公共參數(shù)Hive參數(shù)參數(shù)說(shuō)明hive-delims-replacement <arg>用自定義的字符串替換掉數(shù)據(jù)中的n, r, and 01等字符hive-drop-import-delims在導(dǎo)入數(shù)據(jù)到hive中時(shí),去掉數(shù)據(jù)中n,r和01這樣的字符map-column-hive <arg>生成hive表時(shí),可以更改生成字段的數(shù)據(jù)類型,格式如:map-column-hiveTBL_ID=String,LAST_ACCESS_TIME=stringhive-partition-key創(chuàng)建分區(qū),后面直接跟分區(qū)名即可,

28、創(chuàng)建完畢后,通過(guò)describe 表名可以看到分區(qū)名,默認(rèn)為string型hive-partition-value<v>該值是在導(dǎo)入數(shù)據(jù)到hive中時(shí),與hive-partition-key設(shè)定的key對(duì)應(yīng)的value值。hive-home <dir>Hive的安裝目錄,可以通過(guò)該參數(shù)覆蓋掉默認(rèn)的hive目錄hive-import將數(shù)據(jù)從關(guān)系數(shù)據(jù)庫(kù)中導(dǎo)入到hive表中hive-overwrite覆蓋掉在hive表中已經(jīng)存在的數(shù)據(jù)create-hive-table默認(rèn)是false,如果目標(biāo)表已經(jīng)存在了,那么創(chuàng)建任務(wù)會(huì)失敗hive-table后面接要?jiǎng)?chuàng)建的hive表tabl

29、e指定關(guān)系數(shù)據(jù)庫(kù)表名數(shù)據(jù)庫(kù)連接參數(shù)參數(shù)說(shuō)明connect <jdbc-uri>Jdcb連接url,示例如:connect jdbc:mysql:/localhost:3306/hiveconnection-manager <class-name>指定要使用的連接管理類driver <class-name>數(shù)據(jù)庫(kù)驅(qū)動(dòng)類hadoop-home <dir>Hadoop根目錄help打印幫助信息-P從控制端讀取密碼password <password>Jdbc url中的數(shù)據(jù)庫(kù)連接密碼username <username>Jdbc

30、 url中的數(shù)據(jù)庫(kù)連接用戶名verbose在控制臺(tái)打印出詳細(xì)信息connection-param-file <filename>一個(gè)記錄著數(shù)據(jù)庫(kù)連接參數(shù)的文件文件輸出參數(shù)用于import場(chǎng)景。示例如:sqoop import connect jdbc:mysql:/localhost:3306/test username root P table person split-by id check-column id incremental append  last-value 1 enclosed-by ”escaped-by # fields-terminated-by

31、 . 參數(shù)說(shuō)明enclosed-by <char>給字段值前后加上指定的字符,比如雙引號(hào),示例:enclosed-by ”,顯示例子:”3,”jimsss”,”dd”escaped-by <char>給雙引號(hào)作轉(zhuǎn)義處理,如字段值為”測(cè)試”,經(jīng)過(guò)escaped-by 處理后,在hdfs中的顯示值為:”測(cè)試”,對(duì)單引號(hào)無(wú)效fields-terminated-by <char>設(shè)定每個(gè)字段是以什么符號(hào)作為結(jié)束的,默認(rèn)是逗號(hào),也可以改為其它符號(hào),如句號(hào).,示例如:fields-terminated-by.lines-terminated-by <char>設(shè)定每條記錄行之間的分隔符,默認(rèn)是換行,但也可以設(shè)定自己所需要的字符串,示例如:lines-terminated-by # 以#號(hào)分隔mysql-delimitersMysql默認(rèn)的分隔符設(shè)置,字段之間以,隔開(kāi),行之間以換行n隔開(kāi),默認(rèn)轉(zhuǎn)義符號(hào)是,字段值以單引號(hào)包含起來(lái)。optionally-enclosed-by <char>en

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論