一 Sqoop是什么
- Sqoop:SQL-to-Hadoop
- 連接傳統關系型數據庫和Hadoop的橋梁 把關系型數據庫的數據導入到 Hadoop 系統 ( 如 HDFS、HBase 和 Hive) 中; 把數據從 Hadoop 系統里抽取並導出到關系型數據庫里
- 利用MapReduce,批處理方式進行數據傳輸
二 Sqoop的優勢
- 高效、可控的利用資源,任務並行度、超時時間等
-
數據類型映射與轉換可自動進行,用戶也可自定義
- 支持多種數據庫(MySQL、Oracle、PostgreSQL)
三 Sqoop架構
四 Sqoop命令
Sqoop import:將數據從關系型數據庫導入Hadoop 中
步驟1 :Sqoop 與數據庫Server通信,獲取數據庫表的元數據信息;
步驟2 :Sqoop 啟動一個Map- Only 的MR 作業,利用元數據信息並行將數據寫入Hadoop
Sqoop import使用
sqoop import \ --connect jdbc:mysql://mysql.example.com/sqoop \ --username sqoop \ --password sqoop \ --table person --target-dir
參數說明:
--connnect: 指定JDBC URL
--username/password :mysql 數據庫的用戶名
--table :要讀取的數據庫表
--hadoop-home hadoop目錄
Sqoop Export 使用
將數據從Hadoop 導入關系型數據庫導中
步驟1 : Sqoop 與數據庫Server通信,獲取數據庫表的元數據信息;
步驟2 :並行導入數據: 將Hadoop 上文件划分成若干個split ; 每個split 由一個Map Task 進行數據導入
sqoop export \ --connect jdbc:mysql://mysql.example.com/sqoop \ --username sqoop \ --password sqoop \ --table cities \ --export-dir cities --fields-terminated-by
--connnect: 指定JDBC URL
--username/password :mysql 數據庫的用戶名
--table :要導入的數據庫表
export-dir :數據在HDFS 上存放目錄
Sqoop與其他系統結合
Sqoop 可以與Oozie 、Hive 、Hbase 等系統結合
用戶需要在sqoop-env.sh 中增加HBASE_HOME 、HIVE_HOME