Mysql到HBase的迁移

举报
唐TTT 发表于 2019/01/28 18:20:22 2019/01/28
【摘要】 Hive可是远重要于HBase sqoop import --connect jdbc:mysql://localhost/retail_db--username root --password hadoop--table products // mysql的products表--columns "customernum,customername" //里面的两个原始数...

Hive可是远重要于HBase


 


sqoop import 


--connect jdbc:mysql://localhost/retail_db


--username  root 


--password hadoop


--table products        // mysql的products表


--columns "customernum,customername"    //里面的两个原始数据列


--hbase-table customercontactinfo     新开关,hive可以自动创建表,但是hbase需要你提前创建好


--column-family CustomerName      //导入到我hbase这个表的这个column-family下面


--hbase-row-key  customernum   ////hbase是必须通过row-key来导入的


--m 1     


 


问题:我们可以更新HBase的一条记录吗?


HBase只能用put,如果原来有这个row-key的数据,那他只能替换成最新的版本。


多版本支持是基于column family的,比如说第一个CF我支持5个版本,第二个CF支持10个版本。

20181128171650800.png

如何检查HBase表中有哪些列?

desc并不能查询出column,只能查出column family。

理论上同一条记录是可以在同一个CF下,有不同的列的,所以没有可以真正检查列的命令。

image.png

1. 首先我们创建hbase表

2. 导入

例子

20181128172658941.png

3.进入Hbase查看下记录数目,果然导入了600多条20181128172955324.png

这次导入我们换--query,不用--table了

20181128173901639.png

4.查下数据

scan 'products' , {LIMIT -->10}

也就是送到了data列族下面

image.png

区别:

往HBase里面放就不用太担心mapper数量了,比如给个15,但是必须让每个mapper有活儿干。

因为HBase是有compaction的,不怕产生很多小文件,而hive没有。

 

问题:重新导了一遍数据,为什么count一下Hbase的记录数还是1345?

区别:

20181128174141882.png

第一次是填了第一个column family的记录,基于row-key

第二次我还是基于row-key插入,插入的是第二个column family。

所以记录数目不会增加,如果值插重复了,就产生多个版本。

20181128174227505.png

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。