[大數據之Sqoop] —— 什麼是Sqoop?

介紹

sqoop是一款用於hadoop和關係型數據庫之間數據導入導出的工具。你能夠經過sqoop把數據從數據庫(好比mysql,oracle)導入到hdfs中;也能夠把數據從hdfs中導出到關係型數據庫中。sqoop經過Hadoop的MapReduce導入導出,所以提供了很高的並行性能以及良好的容錯性。java

sqoop適合如下的人羣使用:mysql

  • 系統和應用開發者
  • 系統管理員
  • 數據庫管理員
  • 數據分析師
  • 數據工程師

支持的版本

本文檔是依據sqoop v1.4.6翻譯的.目前最新的版本是sqoop2,變化有點大。sql

sqoop的版本

sqoop是Apache軟件基金會提供的開源框架。官方網站參考:http://sqoop.apache.org。數據庫

前提條件

想要使用這款工具須要有一下的背景:apache

  • 基本的計算機知識
  • 對相似bash的命令行比較熟悉(由於sqoop基本都是經過命令行來操做的)
  • 熟悉關係型數據庫系統的管理(畢竟是從數據庫到出)
  • 熟悉hadoop基本操做(瞭解基本的hdfs操做和mapreduce的原理會更容易理解sqoop的過程)

在你使用sqoop以前,須要先安裝hadoop。這個文檔是基於Linux環境的,若是你是在windows下使用,須要安裝cygwin。windows

基本的使用

經過sqoop,你能夠從關係型數據庫中導出數據,導入到hdfs中。輸入多是數據庫的一張表或者查詢結果;輸出則是數據庫表或者結果的導出文件集合。導入進程是並行的,所以輸出的結果多是多個文件(最終在hdfs中可能會獲得多個文件)。這些文件多是標準的文本文件TextFile(好比,使用逗號作字段間的分割),也多是Avro或者SequeenceFiles的記錄文件。bash

sqoop的導入進程是一個自動生成出來的java class,所以它的不少組件均可以自定義,好比導入的格式、文本的格式、到出的格式等等。oracle

sqoop還提供了不少的工具來檢查數據庫.框架

好比經過sqoop-list-databases能夠列出數據庫的表視圖。ide

[root@hadoop-master bin]# sqoop-list-databases --connect 'jdbc:mysql://localhost:3306/dbname' --username 'name' --password 'passwd'
16/09/29 18:29:11 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6
16/09/29 18:29:11 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.
16/09/29 18:29:11 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
test
dev
xingoo

經過sqoop-list-tables查看錶

[root@hadoop-master bin]# sqoop-list-tables --connect 'jdbc:mysql://localhost:3306/dbname' --username 'name' --password 'passwd'
16/09/29 18:26:50 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6
16/09/29 18:26:50 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.
16/09/29 18:26:51 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
a
b
c
d

大多數導入進程,代碼生成,導出進程均可以自定義。對於數據庫,你能夠控制到特定的行或者列,讀取哪些行,讀取哪些列。對於輸出的hdfs文件,能夠指定特定的分隔符以及轉義字符,以及文本的格式化。甚至能夠控制生成代碼的類和包的名字。

總結的來講,sqoop是基於mapreduce的一款db和hadoop之間的數據交換工具。後續的文檔,將會介紹sqoop在使用時的參數。

相關文章
相關標籤/搜索