美文网首页大数据大数据进阶
黑猴子的家:HBase 与 Sqoop 集成

黑猴子的家:HBase 与 Sqoop 集成

作者: 黑猴子的家 | 来源:发表于2018-10-05 09:24 被阅读72次

    Sqoop supports additional import targets beyond HDFS and Hive. Sqoop can also import records into a table in HBase.
    之前我们已经学习过如何使用Sqoop在Hadoop集群和关系型数据库中进行数据的导入导出工作,接下来我们学习一下利用Sqoop在HBase和RDBMS中进行数据的转储。

    1、相关参数

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

    2、案例

    将RDBMS中的数据抽取到HBase中

    (1) 配置sqoop-env.sh,添加如下内容

    export HBASE_HOME=/home/admin/modules/hbase-1.3.1
    

    (2) 在Mysql中新建一个数据库db_library,一张表book

    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);
    

    (3) 向表中插入一些数据

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

    (4) 执行Sqoop导入数据的操作

    [victor@hadoop102 sqoop]$ bin/sqoop import \
    --connect jdbc:mysql://linux01:3306/db_library \
    --username root \
    --password 123456 \
    --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
    

    尖叫提示:sqoop1.4.6只支持HBase1.0.1之前的版本的自动创建HBase表的功能
    解决方案:手动创建HBase表

    hbase> create 'hbase_book','info'
    

    (5) 在HBase中scan这张表得到如下内容

    hbase> scan 'hbase_book'
    

    思考:尝试使用复合键作为导入数据时的rowkey。

    3、Sqoop RDBMS 到 HBase

    https://www.jianshu.com/p/f1ebe4e758da

    4、Sqoop HBase 到 RDBMS

    https://www.jianshu.com/p/3717ff71b503

    相关文章

      网友评论

        本文标题:黑猴子的家:HBase 与 Sqoop 集成

        本文链接:https://www.haomeiwen.com/subject/gtofaftx.html