Mysql 数据导入 Hbase

目录

一、前言

二、使用sqoop遇到的问题

三、项目搭建(maven项目)

四、项目重点

五、项目代码

六、数据实时同步


一、前言

在大数据项目中需要做数据迁移时,我们第一时间总会想到sqoop。sqoop是apache 旗下一款“Hadoop 和关系数据库服务器之间传送数据”的工具,使用才来也很方便。但因项目需求在使用sqoop是遇到了一些问题,所以决定自己开发一个一个项目解决该问题。

二、使用sqoop遇到的问题

  1. 想要利用hbase的特性,数据按照Row key的字典序排序存储,但使用sqoop时无法对Row key做特殊处理;
  2. 使用sqoop将数据导入hbase一些数据都默认变成字符串类型。

三、项目搭建(maven项目)

依赖

            mysql

            mysql-connector-java

            5.1.43

        

        

            org.mybatis

            mybatis

            3.4.1

        

        

            log4j

            log4j

            1.2.12

        

        

            org.apache.hadoop

            hadoop-common

            2.6.0

        

        

            org.apache.hadoop

            hadoop-hdfs

            2.6.0

        

        

            org.apache.hbase

            hbase-client

            1.2.0

        

        

            org.apache.hbase

            hbase-server

            1.2.0

        

插件

            

                org.mybatis.generator

                mybatis-generator-maven-plugin

                1.3.2

                

                    ${basedir}/src/main/resources/generator/generatorConfig.xml

                    true

                    true

                

            

四、项目重点

  1. 查询数据库数据
    • 通过mybatis逆向工程插件生成model 、mapper,需要编写配置文件generatorConfig.xml。
    • 通过mybatis查询数据,可以自己编写查询语句,实现灵活的数据过滤

  2. 将查询到数据写入Hbase

    • 将java数据类型转换为hbase中的二进制数据类型,需要model类实现HbaseSerialization

      或者让model继承HbaseSerializationReflect(建议),这个抽象类通过反射的方式实现了部分方法,已达到减少编程工作量和代码通用性

    • 将数据写入Hbase,通过工具类HbaseUtils实现灵活的数据添加、更新

    • 灵活的Row Key通过实现HbaseSerialization中的getKey方法实现
    • 灵活的过滤写入hbase中的数据,model继承HbaseSerializationReflect

  3. 项目运行

五、项目代码

githup : https://github.com/beyondQjm/data-synch.git

CSDN : https://download.csdn.net/download/beyond_qjm/10758716

六、数据实时同步

https://blog.csdn.net/beyond_qjm/article/details/83624896

 

你可能感兴趣的:(大数据)