91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

sqoop 中文手冊

發布時間:2020-06-07 16:52:03 來源:網絡 閱讀:4880 作者:jackwxh 欄目:數據庫

1.     概述

本文檔主要對SQOOP的使用進行了說明,參考內容主要來自于Cloudera SQOOP的官方文檔。為了用中文更清楚明白地描述各參數的使用含義,本文檔幾乎所有參數使用說明都經過了我的實際驗證而得到。

2.     codegen

將關系數據庫表映射為一個java文件、java class類、以及相關的jar包,作用主要是兩方面:

1、  將數據庫表映射為一個Java文件,在該Java文件中對應有表的各個字段。

2、  生成的Jar和class文件在metastore功能使用時會用到。

基礎語句:

sqoop codegen –connect jdbc:mysql://localhost:3306/hive –username root –password 123456 –table TBLS2

 

參數說明
–bindir <dir>指定生成的java文件、編譯成的class文件及將生成文件打包為JAR的JAR包文件輸出路徑
–class-name <name>設定生成的Java文件指定的名稱
–outdir <dir>生成的java文件存放路徑
–package-name<name>包名,如cn.cnnic,則會生成cn和cnnic兩級目錄,生成的文件(如java文件)就存放在cnnic目錄里
–input-null-non-string<null-str>在生成的java文件中,可以將null字符串設為想要設定的值(比如空字符串’’)
–input-null-string<null-str>同上,設定時,最好與上面的屬性一起設置,且設置同樣的值(比如空字符串等等)。
–map-column-java<arg>數據庫字段在生成的java文件中會映射為各種屬性,且默認的數據類型與數據庫類型保持對應,比如數據庫中某字段的類型為bigint,則在Java文件中的數據類型為long型,通過這個屬性,可以改變數據庫字段在java中映射的數據類型,格式如:–map-column-java DB_ID=String,id=Integer
–null-non-string<null-str>在生成的java文件中,比如TBL_ID==null?”null”:””,通過這個屬性設置可以將null字符串設置為其它值如ddd,TBL_ID==null?”ddd”:””
–null-string<null-str>同上,使用的時候最好和上面的屬性一起用,且設置為相同的值
–table <table-name>對應關系數據庫的表名,生成的java文件中的各屬性與該表的各字段一一對應。

 

3.     create-hive-table

生成與關系數據庫表的表結構對應的HIVE表

基礎語句:

sqoop create-hive-table –connect jdbc:mysql://localhost:3306/hive -username root -password 123456 –table TBLS –hive-table h_tbls2

參數說明
–hive-home <dir>Hive的安裝目錄,可以通過該參數覆蓋掉默認的hive目錄
–hive-overwrite覆蓋掉在hive表中已經存在的數據
–create-hive-table默認是false,如果目標表已經存在了,那么創建任務會失敗
–hive-table后面接要創建的hive表
–table指定關系數據庫表名

 

4.     eval

可以快速地使用SQL語句對關系數據庫進行操作,這可以使得在使用import這種工具進行數據導入的時候,可以預先了解相關的SQL語句是否正確,并能將結果顯示在控制臺。

查詢示例

sqoop eval –connect jdbc:mysql://localhost:3306/hive -username root -password 123456 -query “SELECT * FROM tbls LIMIT 10”

數據插入示例

sqoop eval –connect jdbc:mysql://localhost:3306/hive -username root -password 123456 -e “INSERT INTO TBLS2

VALUES(100,1375170308,1,0,’hadoop’,0,1,’guest’,’MANAGED_TABLE’,’abc’,’ddd’)”

-e、-query這兩個參數經過測試,比如后面分別接查詢和插入SQL語句,皆可運行無誤,如上。

5.     export

從hdfs中導數據到關系數據庫中

sqoop export –connect jdbc:mysql://localhost:3306/hive –username root –password

123456  –table TBLS2 –export-dir sqoop/test

參數說明
–direct快速模式,利用了數據庫的導入工具,如mysql的mysqlimport,可以比jdbc連接的方式更為高效的將數據導入到關系數據庫中。
–export-dir <dir>存放數據的HDFS的源目錄
-m,–num-mappers <n>啟動N個map來并行導入數據,默認是4個,最好不要將數字設置為高于集群的最大Map數
–table <table-name>要導入到的關系數據庫表
–update-key <col-name>后面接條件列名,通過該參數,可以將關系數據庫中已經存在的數據進行更新操作,類似于關系數據庫中的update操作
–update-mode <mode>更新模式,有兩個值updateonly和默認的allowinsert,該參數只能是在關系數據表里不存在要導入的記錄時才能使用,比如要導入的hdfs中有一條id=1的記錄,如果在表里已經有一條記錄id=2,那么更新會失敗。
–input-null-string <null-string>可選參數,如果沒有指定,則字符串null將被使用
–input-null-non-string <null-string>可選參數,如果沒有指定,則字符串null將被使用
–staging-table <staging-table-name>該參數是用來保證在數據導入關系數據庫表的過程中事務安全性的,因為在導入的過程中可能會有多個事務,那么一個事務失敗會影響到其它事務,比如導入的數據會出現錯誤或出現重復的記錄等等情況,那么通過該參數可以避免這種情況。創建一個與導入目標表同樣的數據結構,保留該表為空在運行數據導入前,所有事務會將結果先存放在該表中,然后最后由該表通過一次事務將結果寫入到目標表中。
–clear-staging-table如果該staging-table非空,則通過該參數可以在運行導入前清除staging-table里的數據。
–batch該模式用于執行基本語句(暫時還不太清楚含義)

 

6.     import

將數據庫表的數據導入到hive中,如果在hive中沒有對應的表,則自動生成與數據庫表名相同的表。

sqoop import –connect jdbc:mysql://localhost:3306/hive –username root –password

123456 –table user –split-by id –hive-import

–split-by指定數據庫表中的主鍵字段名,在這里為id。

參數說明
–append將數據追加到hdfs中已經存在的dataset中。使用該參數,sqoop將把數據先導入到一個臨時目錄中,然后重新給文件命名到一個正式的目錄中,以避免和該目錄中已存在的文件重名。
–as-avrodatafile將數據導入到一個Avro數據文件中
–as-sequencefile將數據導入到一個sequence文件中
–as-textfile將數據導入到一個普通文本文件中,生成該文本文件后,可以在hive中通過sql語句查詢出結果。
–boundary-query <statement>邊界查詢,也就是在導入前先通過SQL查詢得到一個結果集,然后導入的數據就是該結果集內的數據,格式如:–boundary-query ‘select id,creationdate from person where id = 3’,表示導入的數據為id=3的記錄,或者select min(<split-by>), max(<split-by>) from <table name>,注意查詢的字段中不能有數據類型為字符串的字段,否則會報錯:java.sql.SQLException: Invalid value for


getLong()

目前問題原因還未知

 

–columns<col,col,col…>指定要導入的字段值,格式如:–columns id,username
–direct直接導入模式,使用的是關系數據庫自帶的導入導出工具。官網上是說這樣導入會更快
–direct-split-size在使用上面direct直接導入的基礎上,對導入的流按字節數分塊,特別是使用直連模式從PostgreSQL導入數據的時候,可以將一個到達設定大小的文件分為幾個獨立的文件。
–inline-lob-limit設定大對象數據類型的最大值
-m,–num-mappers啟動N個map來并行導入數據,默認是4個,最好不要將數字設置為高于集群的節點數
–query,-e<statement>從查詢結果中導入數據,該參數使用時必須指定–target-dir、–hive-table,在查詢語句中一定要有where條件且在where條件中需要包含$CONDITIONS,示例:–query ‘select * from person where $CONDITIONS ‘ –target-dir


/user/hive/warehouse/person –hive-table person

–split-by<column-name>表的列名,用來切分工作單元,一般后面跟主鍵ID
–table <table-name>關系數據庫表名,數據從該表中獲取
–target-dir <dir>指定hdfs路徑
–warehouse-dir <dir>與–target-dir不能同時使用,指定數據導入的存放目錄,適用于hdfs導入,不適合導入hive目錄
–where從關系數據庫導入數據時的查詢條件,示例:–where ‘id = 2’
-z,–compress壓縮參數,默認情況下數據是沒被壓縮的,通過該參數可以使用gzip壓縮算法對數據進行壓縮,適用于SequenceFile, text文本文件, 和Avro文件
–compression-codecHadoop壓縮編碼,默認是gzip
–null-string <null-string>可選參數,如果沒有指定,則字符串null將被使用
–null-non-string<null-string>可選參數,如果沒有指定,則字符串null將被使用

增量導入

參數說明
–check-column (col)用來作為判斷的列名,如id
–incremental (mode)append:追加,比如對大于last-value指定的值之后的記錄進行追加導入。lastmodified:最后的修改時間,追加last-value指定的日期之后的記錄
–last-value (value)指定自從上次導入后列的最大值(大于該指定的值),也可以自己設定某一值

對incremental參數,如果是以日期作為追加導入的依據,則使用lastmodified,否則就使用append值。

7.     import-all-tables

將數據庫里的所有表導入到HDFS中,每個表在hdfs中都對應一個獨立的目錄。

sqoop import-all-tables –connect jdbc:mysql://localhost:3306/test

sqoop import-all-tables –connect jdbc:mysql://localhost:3306/test –hive-import

 

參數說明
–as-avrodatafile同import參數
–as-sequencefile同import參數
–as-textfile同import參數
–direct同import參數
–direct-split-size <n>同import參數
–inline-lob-limit <n>同import參數
-m,–num-mappers <n>同import參數
–warehouse-dir <dir>同import參數
-z,–compress同import參數
–compression-codec同import參數

 

8.     job

用來生成一個sqoop的任務,生成后,該任務并不執行,除非使用命令執行該任務。

sqoop job

參數說明
–create <job-id>生成一個job,示例如:sqoop job –create myjob  — import –connectjdbc:mysql://localhost:3306/test –table


person

 

–delete <job-id>刪除一個jobsqoop job –delete myjob
–exec <job-id>執行一個jobsqoop job –exec myjob
–help顯示幫助說明
–list顯示所有的jobsqoop job –list
–meta-connect <jdbc-uri>用來連接metastore服務,示例如:–meta-connect jdbc:hsqldb:hsql://localhost:16000/sqoop
–show <job-id>顯示一個job的各種參數sqoop job –show myjob
–verbose打印命令運行時的詳細信息

 

9.     list-databases

打印出關系數據庫所有的數據庫名

sqoop list-databases –connect jdbc:mysql://localhost:3306/ -username root -password 123456

10.             list-tables

打印出關系數據庫某一數據庫的所有表名

sqoop list-tables –connect jdbc:mysql://localhost:3306/zihou -username root -password 123456

11.             merge

將HDFS中不同目錄下面的數據合在一起,并存放在指定的目錄中,示例如:

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名是對應于Person.jar中的Person類,而Person.jar是通過Codegen生成的

參數說明
–new-data <path>Hdfs中存放數據的一個目錄,該目錄中的數據是希望在合并后能優先保留的,原則上一般是存放越新數據的目錄就對應這個參數。
–onto <path>Hdfs中存放數據的一個目錄,該目錄中的數據是希望在合并后能被更新數據替換掉的,原則上一般是存放越舊數據的目錄就對應這個參數。
–merge-key <col>合并鍵,一般是主鍵ID
–jar-file <file>合并時引入的jar包,該jar包是通過Codegen工具生成的jar包
–class-name <class>對應的表名或對象名,該class類是包含在jar包中的。
–target-dir <path>合并后的數據在HDFS里的存放目錄

 

12.             metastore

記錄sqoop job的元數據信息,如果不啟動metastore實例,則默認的元數據存儲目錄為:~/.sqoop,如果要更改存儲目錄,可以在配置文件sqoop-site.xml中進行更改。

metastore實例啟動:sqoop metastore

 

參數說明
–shutdown關閉一個運行的metastore實例

13.             version

顯示sqoop版本信息

語句:sqoop version

14.             help

打印sqoop幫助信息

語句:sqoop help

15.             公共參數

Hive參數

參數說明
–hive-delims-replacement <arg>用自定義的字符串替換掉數據中的\n, \r, and \01等字符
–hive-drop-import-delims在導入數據到hive中時,去掉數據中\n,\r和\01這樣的字符
–map-column-hive <arg>生成hive表時,可以更改生成字段的數據類型,格式如:–map-column-hiveTBL_ID=String,LAST_ACCESS_TIME=string
–hive-partition-key創建分區,后面直接跟分區名即可,創建完畢后,通過describe 表名可以看到分區名,默認為string型
–hive-partition-value<v>該值是在導入數據到hive中時,與–hive-partition-key設定的key對應的value值。
–hive-home <dir>Hive的安裝目錄,可以通過該參數覆蓋掉默認的hive目錄
–hive-import將數據從關系數據庫中導入到hive表中
–hive-overwrite覆蓋掉在hive表中已經存在的數據
–create-hive-table默認是false,如果目標表已經存在了,那么創建任務會失敗
–hive-table后面接要創建的hive表
–table指定關系數據庫表名

數據庫連接參數

參數說明
–connect <jdbc-uri>Jdcb連接url,示例如:–connect jdbc:mysql://localhost:3306/hive
–connection-manager <class-name>指定要使用的連接管理類
–driver <class-name>數據庫驅動類
–hadoop-home <dir>Hadoop根目錄
–help打印幫助信息
-P從控制端讀取密碼
–password <password>Jdbc url中的數據庫連接密碼
–username <username>Jdbc url中的數據庫連接用戶名
–verbose在控制臺打印出詳細信息
–connection-param-file <filename>一個記錄著數據庫連接參數的文件

文件輸出參數

用于import場景。

示例如:

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 .

 

參數說明
–enclosed-by <char>給字段值前后加上指定的字符,比如雙引號,示例:–enclosed-by ‘\”‘,顯示例子:”3″,”jimsss”,”dd@dd.com”
–escaped-by <char>給雙引號作轉義處理,如字段值為”測試”,經過–escaped-by \\處理后,在hdfs中的顯示值為:\”測試\”,對單引號無效
–fields-terminated-by <char>設定每個字段是以什么符號作為結束的,默認是逗號,也可以改為其它符號,如句號.,示例如:–fields-terminated-by.
–lines-terminated-by <char>設定每條記錄行之間的分隔符,默認是換行,但也可以設定自己所需要的字符串,示例如:–lines-terminated-by ‘#’ 以#號分隔
–mysql-delimitersMysql默認的分隔符設置,字段之間以,隔開,行之間以換行\n隔開,默認轉義符號是\,字段值以單引號’包含起來。
–optionally-enclosed-by <char>enclosed-by是強制給每個字段值前后都加上指定的符號,而–optionally-enclosed-by只是給帶有雙引號或單引號的字段值加上指定的符號,故叫可選的。示例如:–optionally-enclosed-by ‘$’


顯示結果:

$”hehe”,測試$

文件輸入參數

對數據格式的解析,用于export場景,與文件輸出參數相對應。

示例如:

sqoop export –connect jdbc:mysql://localhost:3306/test –username root –password

123456  –table person2 –export-dir /user/hadoop/person –staging-table person3

–clear-staging-table –input-fields-terminated-by ‘,’

在hdfs中存在某一格式的數據,在將這樣的數據導入到關系數據庫中時,必須要按照該格式來解析出相應的字段值,比如在hdfs中有這樣格式的數據:

3,jimsss,dd@dd.com,1,2013-08-07 16:00:48.0,”hehe”,測試

上面的各字段是以逗號分隔的,那么在解析時,必須要以逗號來解析出各字段值,如:

–input-fields-terminated-by ‘,’

參數說明
–input-enclosed-by <char>對字段值前后有指定的字符,比如雙引號的值進行解析:–input-enclosed-by ‘\”‘,數據例子:”3″,”jimsss”,”dd@dd.com”
–input-escaped-by <char>對含有轉義雙引號的字段值作轉義處理,如字段值為\”測試\”,經過–input-escaped-by \\處理后,解析得到的值為:”測試”,對單引號無效。
–input-fields-terminated-by <char>以字段間的分隔符來解析得到各字段值,示例如:– input-fields-terminated-by,
–input-lines-terminated-by <char>以每條記錄行之間的分隔符來解析得到字段值,示例如:–input-lines-terminated-by ‘#’ 以#號分隔
–input-optionally-enclosed-by <char>與–input-enclosed-by功能相似,與–input-enclosed-by的區別參見輸出參數中對–optionally-enclosed-by的描述

 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

三台县| 大渡口区| 江达县| 泗阳县| 鄢陵县| 平武县| 平阴县| 临江市| 油尖旺区| 攀枝花市| 霍山县| 铜川市| 麻城市| 石景山区| 兴文县| 长治县| 得荣县| 阜康市| 襄樊市| 平凉市| 辛集市| 新巴尔虎左旗| 津南区| 台东县| 泽州县| 土默特左旗| 车险| 台安县| 平舆县| 苍南县| 苏尼特右旗| 潍坊市| 赤水市| 安阳市| 利津县| 忻州市| 芮城县| 牟定县| 安宁市| 邵阳县| 孟村|