利用sqoop从mysql向hbase导数据(拼接mysql多字段做为hbase rowkey)
来源:互联网 发布:信封数据 编辑:程序博客网 时间:2024/04/30 11:52
说说自己的思路,路过的朋友请帮忙指正或提新建议,万分感谢。
场景介绍:
自己在mysql中有1张表,每天2GB左右的统计数据,,因为资源原因需定期删除。
但有其他场景需要保存1年以上,所以想把数据备份在hbase里,同时还要能支持准实时查询。
选择Sqoop原因:
希望以后能有一个较通用的数据迁移方案(在mysql和hbase/hive/hdfs之间),尽量减少重复代码的开发与维护。
测试场景(已验证)
假设在数据库实例 logdb 中有一张表:system_log, 包含如下五个字段:
id: int(12) PRI AUTO_INCREMENT (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
mytime: datetime (格式:2015-12-12 12:12:12)
mytype: varchar(128)
value1: varchar(256)
value2: varchar(256)
为了提高查询效率,我设计hbase rowkey如下: mytype_mytime_id, 列族(cf)中有两列:cf:value1, cf:value2。因为我的查找需求就是查询某个mytype在指定时间段内的属性值。
具体测试步骤:
<1> 创建一张临时表 system_log_tmp
CREATE TABLE system_log_tmp LIKE system_log;
<2> 将昨日增量数据copy至该临时表
INSERT system_log_Tmp SELECT * FROM system_log
<3> 给临时表添加新列 hbase_row_key
ALTER TABLE system_log_tmp ADD COLUMN hbase_row_key varchar(256)
<4> 在临时表中通过拼接对应三列来补全新列内容(为方便查询,ID字段统一为11位,不够右侧补零;为节省空间,mytime字段改为20151212121212样式)
UPDATE system_log_tmp SET hbase_row_key=concat( type, ':', date_format(time, '%Y%m%d%H%i%s'), ':', right( concat('000000000000', id), 12))
<5> 运行sqoop命令,将数据从临时表导入hbase:
./bin/sqoop import --connect jdbc:mysql://testPC:3306/logdb --table system_log_tmp --hbase-table system_log --column-family cf --hbase-row-key hbase_row_key --hbase-create-table --username 'root' -P;
如果第五步不成功,请检查sqoop是否安装正确,以及Hadoop Resource Manager是否启动(可通过hadoop web UI排查错误)。
最后简单介绍下第<5>步命令中的参数:
--connect: 指明源db为testPC上的logdb
--table: 指明源表为logdb中的system_log_tmp
--hbase-table: 指明hbase中的目标表名称
--column-family: 指明hbase中目标表内的列族
--hbase-row-key: 指明要用mysql中的哪一列作为hbase表中的rowkey
--hbase-create-table: 指明是否需要创建hbase表
--username: 指明mysql账户
--P:会提示输入mysql账户密码
IT人的微信自媒体--- 杰天空, 走在寻找创意的路上
发掘创意,点缀生活,品味人生。
请搜索微信订阅号: jksy_studio ,或者微信扫描头像二维码添加关注
- 利用sqoop从mysql向hbase导数据(拼接mysql多字段做为hbase rowkey)
- Sqoop实现MySql/Oracle与Hdfs/Hbase互导数据
- Sqoop实现MySql/Oracle与Hdfs/Hbase互导数据
- sqoop从关系型数据库导数据到hbase
- sqoop从hbase导出数据到mysql
- 通过Sqoop实现Mysql / Oracle 与HDFS / Hbase互导数据
- 通过Sqoop实现Mysql / Oracle 与HDFS / Hbase互导数据
- 用Sqoop进行Mysql 与HDFS / Hbase的互导数据
- 通过Sqoop实现Mysql / Oracle 与HDFS / Hbase互导数据
- 通过Sqoop实现Mysql / Oracle 与HDFS / Hbase互导数据
- 通过Sqoop实现Mysql / Oracle 与HDFS / Hbase互导数据
- 通过Sqoop实现Mysql / Oracle 与HDFS / Hbase互导数据
- 通过Sqoop实现Mysql / Oracle 与HDFS / Hbase互导数据
- 通过Sqoop实现Mysql / Oracle 与HDFS / Hbase互导数据
- 【hadoop Sqoop】Sqoop从mysql导数据到hive
- 【hadoop Sqoop】Sqoop从mysql导数据到hdfs
- 利用Sqoop将MySQL海量测试数据导入HDFS和HBase
- 使用sqoop把数据从mysql导入到hbase
- 线性规划与网络流24题 1.飞行员配对方案问题(nefu 475)
- 陶哲轩实分析 2.3节 习题试解
- 一款sublime很棒的代码格式化插件
- Go 1.6 release party
- maven nexus私服搭建(重点要耐心等候)
- 利用sqoop从mysql向hbase导数据(拼接mysql多字段做为hbase rowkey)
- GitLab配置HTTPS
- 03-mac环境java SE搭建记录
- 通过itemId查找组件
- LPC1700系列芯片内存注意问题
- 第二类斯特林数的递推公式
- Fresco最最最简单使用
- 看电影学英语(二)
- AFNetWorking3.0处理请求头和请求内容