前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用Sqoop实现Hbase的数据与MySQL数据的互导

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

作者头像
CoderJed
发布2018-09-13 10:39:46
2.3K0
发布2018-09-13 10:39:46
举报
文章被收录于专栏:Jed的技术阶梯

1. MySQL数据导入到HBase中

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

代码语言:javascript
复制
sid     sname   sage
1       Tom     15
2       Jack    16
3       Tony    17
4       Bob     18

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

代码语言:javascript
复制
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命令中的配置的意思:

代码语言:javascript
复制
--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"表中内容:

代码语言:javascript
复制
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. 如果报以下错误
代码语言:javascript
复制
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命令就可以成功

代码语言:javascript
复制
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中
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.01.18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. MySQL数据导入到HBase中
  • 2. HBase表中数据导入到MySQL中
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档