大數據系列——Sqoop學習筆記

1. Sqoop簡介

  •  Apache Sqoop是一種專門爲hadoop和好比關係型數據庫等結構化數據庫之間的高效數據轉換一種工具。
  • 數據的搬運工
  • Sqoop在大多數自動化數據轉換的過程當中,依託於數據庫相關的Schema描述信息,轉換的過程是使用MapReduce來進行的
  • Sqoop目前有兩個版本,徹底不兼容,Sqoop和Sqoop2.能夠經過版本號來進行簡單的區分,1.4.x爲sqoop或sqoop1,1.99.x爲sqoop2

2. Sqoop數據的導入(import)

  • 傳統的RDBMS中的數據導入到hbase...
  • 從傳統數據庫獲取元數據信息(schema、table、field、field type),把導入功能轉換爲只有Map的

    Mapreduce做業,在mapreduce中有不少map,每一個map讀一片數據,進而並行的完成數據的拷貝。java

3. Sqoop數據的導出(export)

  • hbase中的數據導出到rdbms中
  • 獲取導出表的schema、meta信息,和Hadoop中的字段match;多個map only做業同時運行,完成hdfs中數據導出到關係型數據庫中。

4. Sqoop的安裝

  • 準備安裝文件mysql

    • sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
  • 解壓sql

    • tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /opt/
  • 重命名shell

    • mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha/ sqoop
  • 配置環境變量數據庫

    export SQOOP_HOME=/opt/sqoop
    export PATH=$PATH:$SQOOP_HOME/bin
  • 修改配置文件vim

    mv sqoop-env-template.sh  sqoop-env.sh

    ==vim sqoop-env.sh==app

    export HADOOP_COMMON_HOME=/opt/hadoop
    export HBASE_HOME=/opt/hbase
    export HIVE_HOME=/opt/hive
    export ZOOCFGDIR=/opt/zookeeper/conf
  • 由於SQOOP要鏈接rdbms,因此須要將該數據的驅動jar包添加進sqoop的classpath中,因此將mysql的jar包上傳至$SQOOP_HOME/lib工具

    • mysql須要mysql-connector-java-5.1.32.jar以上版本支持。

5. Sqoop的基本操做

  • 列出數據庫

    sqoop-list-databases --connect jdbc:mysql://uplooking05:3306/ --username root --password rootoop

  • 列出全部的表

    sqoop-list-tables --connect jdbc:mysql://uplooking05:3306/up1 --username root --password rooturl

6. mysql中的數據導入到hdfs中

sqoop-import --connect jdbc:mysql://uplooking05/up2 --username root --password root --table user

  • ==在執行導入的過程當中,必定要肯定RDBMS中的表中有pk==
  • --target-dir:導入到自定義的hdfs目錄中
  • --append : 追加導入
  • -m :指定maptask的數量
  • --username :數據庫的用戶名
  • --password :數據庫的密碼
  • --connect :數據庫的url
  • --delete-target-dir : 通常與--target-dir聯用,與--append是==互斥==的
  • --last-value : 跳過幾行數據,追加其他全部的數據
  • --where:根據條件進行導入

    • sqoop-import --connect jdbc:mysql://uplooking05/up2 --username root --pass
      word root --table user --target-dir /sqoop/user --delete-target-dir --where 'id>2'**
  • --query:導入mysql查詢的結果到hdfs

    • sqoop-import --connect jdbc:mysql://uplooking05/up2 --username root --pass
      word root --target-dir /sqoop/user --delete-target-dir --query "select name,age from user where age>10 and $CONDITIONS" --split-by 'age'

7. mysql中的數據導入hbase中

sqoop-import --connect jdbc:mysql://uplooking05/up2 --username root --password root --table user --hbase-row-key id --hbase-table ns1:t2 --column-family f1

--hbase-row-key: 能夠不指定,不指定默認hbase中的row-lkey就是mysql中的主鍵

==注意:導入數據到hbase數據庫以前須要在hbase中先建立表和列族==

8. hdfs中的數據導出到mysql

sqoop-export --connect jdbc:mysql://uplooking05:3306/up2 --username root --password root --table user --export-dir /sqoop/user2

==注意:導出以前首先須要在mysql中建立表==

9. hbase中的數據導出到mysql

不可行

相關文章
相關標籤/搜索