Mysql到HBase的迁移
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个版本。
如何检查HBase表中有哪些列?
desc并不能查询出column,只能查出column family。
理论上同一条记录是可以在同一个CF下,有不同的列的,所以没有可以真正检查列的命令。
1. 首先我们创建hbase表
2. 导入
例子
3.进入Hbase查看下记录数目,果然导入了600多条
这次导入我们换--query,不用--table了
4.查下数据
scan 'products' , {LIMIT -->10}
也就是送到了data列族下面
区别:
往HBase里面放就不用太担心mapper数量了,比如给个15,但是必须让每个mapper有活儿干。
因为HBase是有compaction的,不怕产生很多小文件,而hive没有。
问题:重新导了一遍数据,为什么count一下Hbase的记录数还是1345?
区别:
第一次是填了第一个column family的记录,基于row-key
第二次我还是基于row-key插入,插入的是第二个column family。
所以记录数目不会增加,如果值插重复了,就产生多个版本。
- 点赞
- 收藏
- 关注作者
评论(0)