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


介紹

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

sqoop適合以下的人群使用:

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

支持的版本

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

sqoop的版本

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

前提條件

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

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

在你使用sqoop之前,需要先安裝hadoop。這個文檔是基於Linux環境的,如果你是在windows下使用,需要安裝cygwin。

基本的使用

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

sqoop的導入進程是一個自動生成出來的java class,因此它的很多組件都可以自定義,比如導入的格式、文本的格式、到出的格式等等。

sqoop還提供了很多的工具來檢查數據庫.

比如通過sqoop-list-databases可以列出數據庫的表視圖。

[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在使用時的參數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM