sqoop1.4.5將mysql中的數據導入到HBase中

什麼是sqoop?

關於發音,困擾了我很久,一番類比之後,決定讀爲“絲庫坡”,英語老師看見了會不會瘋掉,呵呵,我就是這樣一個逗x。

 

書歸正傳:
Sqoop【SQL-To-Hadoop】是將關係型數據庫的數據(MySQL or Oracle or Postgre)導入到HDFS及其子系統中(Hive, HBase)的工具

 

sqoop有兩個版本,sqoop1和sqoop2,兩者特性不同,本文僅介紹sqoop1的使用,其實是精力有限

 

sqoop1.4.5的搭建過程如下:

1. 軟件的版本:

hadoop-1.0.3
zookeeper-3.4.4
hbase-0.94.0
sqoop-1.4.5

 

2. 基礎的Hadoop上搭建Hbase的步驟略過

 

3. 解壓壓縮包並重命名
cd /usr/local/
tar -xzvf sqoop-1.4.5.bin__hadoop-1.0.0.tar.gz
mv sqoop-1.4.5.bin__hadoop-1.0.0 sqoop

 

4. 將mysql的jdbc驅動,複製到sqoop項目的lib目錄下
使用的mysql驅動包版本: mysql-connector-java-5.1.34-bin.jar
注意: mysql connector 5.1.32以下版本mysql jar有bug

 

5. 重命名配置文件並指定其參數
cd  /usr/local/sqoop/conf
mv sqoop-env-template.sh sqoop-env.sh
本次使用到了hadoop hbase及zookeeper,因此需要指定如下參數
export HADOOP_COMMON_HOME=/usr/local/hadoop
#指定hadoop-*-core.jar文件的位置
export HADOOP_MAPRED_HOME=/usr/local/hadoop
export HBASE_HOME=/usr/local/hbase
export ZOOCFGDIR=/usr/local/zookeeper/conf

 

6. 嘗試用sqoop連接到Mysql數據庫

#列出Mysql的dbName下的所有表

/usr/local/sqoop/bin/sqoop list-tables --connect jdbc:mysql://ip:3306/dbName --username XXX --password XXX

 

7. 數據導入

帶主鍵的全列操作
/usr/local/sqoop/bin/sqoop import --connect jdbc:mysql://ip:3306/dbName --username XXX --password XXX --table MysqlTableName --hbase-table HBaseTableName  --column-family HBase_CF --hbase-create-table

 

帶主鍵的部分列操作
/usr/local/sqoop/bin/sqoop import --connect jdbc:mysql://ip:3306/dbName --username XXX --password XXX --table MysqlTableName --hbase-table HBaseTableName --columns column1,column2 --column-family HBase_CF --hbase-create-table

 

無主鍵的部分列導入,將其中一個設爲rowkey
/usr/local/sqoop/bin/sqoop import --connect jdbc:mysql://ip:3306/dbName --username XXX --password XXX --table MysqlTableName --hbase-table HBaseTableName --columns column1,column2 --column-family HBase_CF --hbase-row-key column1 --hbase-create-table

 

8.源碼中代碼結構圖如下

原理是利用mapreduce的job向hbase中寫入數據



 

 

 

 

  • d3047639-76b0-36a1-9304-4f9fa51536b6-thumb.png
  • 大小: 20.1 KB
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章