利用Sqoop实现Hbase的数据与MySQL数据的互导

1. MySQL数据导入到HBase中

在服务器(主机名为repo)的mysql数据库中的”test”库中有一张”student”表,其中内容如下:

sid     sname   sage
1       Tom     15
2       Jack    16
3       Tony    17
4       Bob     18

现在利用sqoop把这张表中的数据导入到hbase中的”h_student”表中

sqoop import \
--connect jdbc:mysql://repo/test \
--username root \
--password root \
--table student \
--hbase-table h_student \
--column-family info \
--hbase-row-key sid \
--hbase-create-table

sqoop命令中的配置的意思:

--connect jdbc:mysql://repo/test \
--username root \
--password root \
--table student \
--hbase-table h_student \
--column-family info \ # 指定hbase表的列族名
--hbase-row-key sid \ # 指定hbase表的rowkey对应为mysql表的sid
--hbase-create-table # 自动在hbase数据库中创建"h_student"这张表

导入数据后”h_student”表中内容:

1       column=info:sage, timestamp=1516189524784, value=15                                    
1       column=info:sname, timestamp=1516189524784, value=Tom                                  
2       column=info:sage, timestamp=1516189524784, value=16                                    
2       column=info:sname, timestamp=1516189524784, value=Jack                                 
3       column=info:sage, timestamp=1516189524784, value=17                                    
3       column=info:sname, timestamp=1516189524784, value=Tony                                 
4       column=info:sage, timestamp=1516189525029, value=18                                    
4       column=info:sname, timestamp=1516189525029, value=Bob                                  
5       column=info:sage, timestamp=1516189525029, value=55

注意事项

  1. sqoop命令过长,为了换行,加了\,在\之后不要有空格,直接回车换行
  2. 如果报以下错误
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.hbase.HTableDescriptor.addFamily(Lorg/apache/hadoop/hbase/HColumnDescriptor;)

说明hbase与sqoop版本不兼容,无法自动创建”h_student”表,你需要手动在hbase表中创建”h_student”表,然后再运行sqoop命令就可以成功

hbase(main):001:0> create 'h_student','info'

2. HBase表中数据导入到MySQL中

目前没有命令可以直接将 hbase 中的数据导出到 mysql,原因:hbase是大数据生态圈的组件,就是为了存放大数据,直接导出到MySQL,MySQL是否可以承受这么大的压力?

替代方案:

  1. 先将 hbase 的数据导出到 hdfs,然后再把数据从HDFS导入MySQL中

  2. 把Hbase表映射为hive表,然后把hive表中数据导出到MySQL中

    原文作者:CoderJed
    原文地址: https://www.jianshu.com/p/3be96085660b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞