黑猴子的家:Sqoop RDBMS 到 HBase

1、相关参数

must be in the form of a comma-separated list of composite key attributes. mysql中哪一列的值作为HBase的rowkey,如果rowkey是个组合键,则以逗号分隔。(注:避免rowkey的重复)
参数 描述
--column-family Sets the target column family for the import 设置导入的目标列族。
--hbase-create-table If specified, create missing HBase tables是否自动创建不存在的HBase表(这就意味着,不需要手动提前在HBase中先建立表)
--hbase-row-key
Specifies which input column to use as the row key.In case, if input table contains composite key, then
--hbase-table Specifies an HBase table to use as the target instead of HDFS.指定数据将要导入到HBase中的哪张表中。
--hbase-bulkload Enables bulk loading.是否允许bulk形式的导入。

2、配置sqoop-env.sh,添加如下内容

[victor@node1 conf]$ vim sqoop-env.sh
export HBASE_HOME=/opt/module/hbase-1.2.5

3、在Mysql中新建一个数据库db_library,一张表book

[victor@node1 conf]$ service mysql status
[victor@node1 conf]$ mysql -uroot -p000000
mysql> CREATE DATABASE db_library;
CREATE TABLE db_library.book(
id int(4) PRIMARY KEY NOT NULL AUTO_INCREMENT, 
name VARCHAR(255) NOT NULL, 
price VARCHAR(255) NOT NULL);

4、向表中插入一些数据

mysql> INSERT INTO db_library.book (name, price) VALUES('Lie Sporting', '30');  
mysql> INSERT INTO db_library.book (name, price) VALUES('Pride & Prejudice', '70');  
mysql> INSERT INTO db_library.book (name, price) VALUES('Fall of Giants', '50');

5、执行Sqoop导入数据的操作

[victor@node1 conf]$ bin/sqoop import \
--connect jdbc:mysql://node1:3306/db_library \
--username root \
--password 000000 \
--table book \
--columns "id,name,price" \
--column-family "info" \
--hbase-create-table \
--hbase-row-key "id" \
--hbase-table "hbase_book" \
--num-mappers 1 \
--split-by id


[victor@node1 hbase-1.2.5]$ bin/hbase shell
hbase> create 'hbase_book','info'


尖叫提示:sqoop1.4.6只支持HBase1.0.1之前的版本的自动创建HBase表的功能
解决方案:手动创建HBase表,sqoop1.4.7已经支持自动创建表了,此时hbase用的是1.2.5版本

6、在HBase中scan这张表得到如下内容

hbase> scan ‘hbase_book’

你可能感兴趣的:(黑猴子的家:Sqoop RDBMS 到 HBase)