利用Sqoop將MySQL海量測試數據導入HDFS和HBase

聲明:做者原創,轉載註明出處。

做者:帥氣陳吃蘋果java

1、安裝Sqoop

一、下載sqoop,解壓、文件夾重命名

wget http://mirror.bit.edu.cn/apache/sqoop/1.4.6/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz

tar -zxvf sqoop-1.4.6.bin_hadoop-2.0.4.alpha.tar.gz  -C /root/hadoop/

mv sqoop-1.4.6.bin_hadoop-2.0.4.alpha sqoop-1.4.6

二、配置環境變量

vim /etc/profile
export SQOOP_HOME=/root/hadoop/sqoop-1.4.6

export PATH = $PATH:$SQOOP_HME/bin

三、驗證

若正常顯示Sqoop版本信息,則安裝配置成功:mysql

[root@localhost ~ ] # sqoop version

2、建立數據庫和表

安裝MySql後,建立測試數據庫和測試表。sql

數據庫名:testshell

表結構:point(pointId int(10) PRIMARYKEY,pointName varchar(16),pointValue int(10))數據庫

3、shell腳本生成測試數據

編寫Shell腳本,此處的插入語句須要根據所建立的表結構來修改:apache

#!/bin/bash
i=1;
MAX_INSERT_ROW_COUONT=$1;
while(( $i <= $MAX_INSERT_ROW_COUNT ))
do
    mysql -uhive -phive test -e "insert into test.point(pointId,pointName,pointValue) values($i,'point"$i"',$i);"
    i=(($i+1))
done
exit 0
上述腳本生成測試數據速度很慢,筆者生成1000萬條數據有如懷胎十月,歡迎建議,感謝!

4、MySql數據導入

MySQL做爲數據源時,Sqoop須要依賴MySQL數據庫鏈接驅動包,下載地址:https://dev.mysql.com/get/Dow...vim

下載後解壓,將mysql-connector-java-5.1.45文件夾下的mysql-connector-java-5.1.44-bin.jar包拷貝到$SQOOP_HOME/lib目錄下便可。bash

一、導入HDFS

sqoop import --connect jdbc:mysql://localhost:3306/test --username hive --password hive  --table 
point
參數解析:

import:表示從傳統數據庫導入數據到 HDFS/HIVE/HBASE等;oop

--connect:創建數據庫鏈接;測試

jdbc:mysql://localhost:3306/test:使用jdbc方式鏈接mysql數據庫,數據庫名爲test;

--username:指定數據庫用戶名;

--password:指定數據庫密碼;

--table:指定表名

注意:

a)HDFS輸出目錄不能已經存在;

b)沒有指定-m或者splite-by時,即沒有指定並行度時,要導入的表必須有主鍵,不然會出錯。

c)導入到指定目錄:sqoop import --connect jdbc:mysql://localhost:3306/test --username hive --password hive --table point --target-dir /directory

若是沒有指定輸出目錄,默認在/user/root/下建立一個與表名一致的子目錄做爲輸出目錄,導入操做執行後,查看HDFS中是否有導入的文件:

hdfs dfs -ls /user/root/point/

二、導入HBase

sqoop import --connect jdbc:mysql://localhost:3306/test --username root --password root --table 
point --hbase-table HPoint --column-family info --hbase-row-key pointId --hbase-create-table
參數解析:

--hbase-table:指定導入到HBase數據庫中某表;

--column-family:指定列族名;

--hbase-row-key:指定rowKey;

--hbase-create-table:表示按照參數建立HBase中的表;

最後,歡迎指正。喜歡的話,點個讚唄,請你吃蘋果。
相關文章
相關標籤/搜索