hadoop匯入資料工具sqoop介紹
Apache sqoop是一個開源的工具,它用於將資料從結構化儲存器抽取到hadoop中,用於進一步的處理,抽取的資料可以被mapreduce程式運用,也可被類似於Hive的工具使用。這篇文章只介紹它具體的使用命令,至於安裝暫且不提大家可以自行百度。
Sqoop命令工具
Shell命令格式
$ sqoop tool-name [tool-arguments]
常見tool-name
Sqoop-list-databases 列出所有資料庫
Sqoop-list-tables列出資料庫下所有表
Sqoop-eval 執行原始的sql指令碼
Sqoop-import
用於匯入單個表從RDBMS到HDFS表的每一行都代表著一個單獨記錄在HDFS
連線資料庫(RDBMS)
命令格式:
$ Sqoop import --connect JDBC:MySql://192.168.0.230/ --username ‘root’ \
--password ‘root’
--connect 資料庫連線地址
--username 資料庫登陸名
--password 資料庫連線地址
注意:一般不推薦直接使用- -password因為這個選項要輸入資料庫明文密碼,是不安全的 一般推薦另外兩個引數選項:
-password-file 用於指定一個密碼檔案。例如:
- -password-file ${user.home}/.password
–p 從控制檯直接輸入密碼
–Driver 用於手動指定JDBC驅動類(預設為mysql)例如:
$ Sqoop import -- Driver com.microsoft.jdbc.sqlserver.sqlserverDriver \
--connect … …
–validate 啟用驗證的資料複製,只支援單表複製
– validate-threshold 指定要使用的闊值驗證類
篩選資料進行匯入
–colums 選擇特定列進行匯入 –colums “id ,name,age”
–where 選擇符合條件的資料進行匯入 –where “id > 400”
注意:預設情況下sqoop使用了
SELECT min(),max() FROM table-name 的查詢語句 可以使用 –boundary-query 自定義指定。
自由資料匯入介面
--query 使用--query自由格式查詢時,必須指定一個目標目錄在叢集模式(多個map)下,必須指定劃分列:例如
$ Sqoop import \ --query ‘SELECT A.,B. FROM A JOIN B ON(A.ID=B.ID) WHERE $CONDITIONS \ --Split-by ID --target-dir /user/foo/joinresult
在一個map任務匯入命令如下: $ Sqoop import \ --query ‘SELECT A.,B. FROM A JOIN B ON(A.ID=B.ID) WHERE $CONDITIONS \ -m 1 --target-dir /user/foo/joinresult
注意:自由查詢裡面不能有or語句
Sqoop匯入hbase
--hbase-table 輸入表的每一行將對應hbase中的每一個put語句
--hbase-row-key 指定行健(預設為sqoop的分割鍵)
--column-family 指定列族(必須)
--hbase-create-table 如果匯入時目標表不存在可以用這個命令預設建立
--hbase-bulkload 批量載入
匯入例子:
$sqoop import --connect JDBC:MySql://192.168.0.230:3306/demo \
--table webpage \
--hbase-table A \
--column-family f \
--hbase-row-key id \
--hbase-create-table \
--username ‘root’ --password ‘root’
Sqoop-import-all-table
使用此命令的必要條件:
每個表必須由一個單列主鍵
必須匯入表的所有列
不能使用非預設splitting column 也不能使用where 語句
語法
$sqoop import-all-tables (generic-args) (import-args)
例如:
$sqoop import-all-tables JDBC:MySql://192.168.0.230:3306/demo
Sqoop-export
此命令用於將HDFS資料匯入到RDBMS表中
語法 $sqoop export (generic-args) (import-args)
其中 --export-dir , --table或 --call 是必須的
預設情況下,sqoop-export匯入新的行到表記錄使用 --update --key 可以更新記錄例如:
$sqoop export --table foo -- update-key id \
-- export-dir /path/to/data -- connect … …
等同於UPDATE FOO SET … … WHERE id = … …
--update-mode
匯出記錄如果主鍵已經存在則更新不存在則新插入
示例
$sqoop export –connect JDBC:MySql://192.168.0.230:3306/foo \
--table bar -- export-dir /results/bar_data/ \
-- validate (可選)
$sqoop export –connect JDBC:MySql://192.168.0.230:3306/foo \
--call barproc -- export-dir /results/bar_data/
使用選項檔案傳遞引數
- --options-files
原來方式:
$sqoop import --connect JDBC:MySql://192.168.0.230:3306/demo \
--username ‘root’ --password ‘root’ --table test
檔案引數模式:
- $sqoop import --options-files /user/import.txt --table test
/user/import 檔案內容:
Import --connect jdbc:mysql://localhost/db --username foo \ --password root
**sqoop原理**
sqoop使用java語言編寫,通過一個MapReduce作業從資料庫中匯入一個表,這個MapReduce作業從表中抽取一行行記錄然後將記錄寫入HDFS
sqoop通過使用JDBC來檢查將要匯入的表,檢索出表中所有的列以及列的sql型別(VARCHAR INTEGER等)這些型別將被對映成java資料型別(String int) 在MapReduce應用中將使用這些對應的java資料型別來儲存欄位的值。sqoop的程式碼生成器使用這些資訊來建立對應表的類,用於儲存從表中抽取的記錄。
sqoop啟動的MapReduce作業用到一個InputFormat類,它通過JDBC從資料庫表中讀取部分內容,Hadoop提供的DataDrivenDBInputFormat 能為查詢結果進行劃分傳給指定個數的map任務
查詢會根據一個劃分列進行劃分sqoop會預設會自動選擇一個合適的劃分列(主鍵),該列的最大值和最小值會被讀出與目標任務一起用來確定每個map任務要執行的查詢。
注意:**劃分列**是影響sqoop並行執行效率的重要因素。
相關文章
- Hadoop Sqoop介紹Hadoop
- sqoop資料匯入匯出OOP
- Sqoop匯入資料異常處理OOP
- sqoop用法之mysql與hive資料匯入匯出OOPMySqlHive
- Sqoop將MySQL資料匯入到hive中OOPMySqlHive
- 資料搬運元件:基於Sqoop管理資料匯入和匯出元件OOP
- sqoop1.4.7環境搭建及mysql資料匯入匯出到hiveOOPMySqlHive
- 20202.9.29課堂筆記(Sqoop介紹及資料遷移)筆記OOP
- sqoop部署及匯入與匯出OOP
- 大資料 Hadoop介紹、配置與使用大資料Hadoop
- 大資料和Hadoop平臺介紹大資料Hadoop
- 達夢資料庫dexp邏輯匯出工具使用介紹資料庫
- Sqoop的介紹和安裝OOP
- sqoop匯入orcle注意事項OOP
- 資料同步工具Sqoop和DataXOOP
- mysql 匯入匯出資料庫以及函式、儲存過程的介紹MySql資料庫函式儲存過程
- 1- hive和sqoop元件介紹HiveOOP元件
- 如何將kafka中的資料快速匯入Hadoop?KafkaHadoop
- 【Hadoop】9、Sqoop元件Hadoop元件
- [資料庫] Navicat for Oracle基本用法(匯入匯出正刪改查)圖文介紹資料庫Oracle
- Hadoop Hive介紹HadoopHive
- Sqoop匯出ClickHouse資料到HiveOOPHive
- 資料字典生成工具及文件工具作用介紹
- 資料介面測試工具 Postman 介紹Postman
- 簡單介紹mysql中資料庫覆蓋匯入的幾種方式MySql資料庫
- 大資料系統框架中hadoop服務角色介紹大資料框架Hadoop
- 如何將傳統關聯式資料庫的資料匯入Hadoop?資料庫Hadoop
- mongodb使用自帶命令工具匯出匯入資料MongoDB
- 大資料hadoop工具大資料Hadoop
- MySQL資料寫入過程介紹MySql
- 【大資料】— sqoop ?大資料OOP
- 帝國CMS網站匯入檔案介紹網站
- 大資料分析三大實用工具介紹!大資料
- 新一代 Excel 匯出工具:ExcelUtil + RunnerUtil 介紹Excel
- 資料庫 MySQL 資料匯入匯出資料庫MySql
- Hadoop進階命令使用介紹Hadoop
- Hadoop-HA節點介紹Hadoop
- Oracle 資料匯入匯出Oracle
- 資料泵匯出匯入