大数据Sqoop将mysql直接抽取至Hbase

Posted 赵广陆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据Sqoop将mysql直接抽取至Hbase相关的知识,希望对你有一定的参考价值。


1 HBase 表设计

用户基本信息: tbl_users

-- 1、如果用户表存在先删除
hbase(main):013:0> disable 'tbl_users'
hbase(main):014:0> drop 'tbl_users'
-- 或者清空表
hbase(main):015:0> truncate 'tbl_users'
-- 2、创建用户表
hbase(main):016:0> create 'tbl_users','detail'
hbase(main):019:0> desc "tbl_users"
Table tbl_users is ENABLED
tbl_users
COLUMN FAMILIES DESCRIPTION
NAME => 'detail', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY =>
'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL
=> 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE =>
'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'
hbase(main):020:0> count "tbl_users"
950 row(s) in 0.1910 seconds

HBase表中有1个Region:

2 Sqoop直接导入

可以使用SQOOP将mysql表的数据导入到HBase表中,指定 表的名称、列簇及RowKey ,范
例如下所示:

/export/servers/sqoop/bin/sqoop import \\
-D sqoop.hbase.add.row.key=true \\
--connect jdbc:mysql://bigdata-cdh01.itcast.cn:3306/tags_dat \\
--username root \\
--password 123456 \\
--table tbl_users \\
--hbase-create-table \\
--hbase-table tbl_users \\
--column-family detail \\
--hbase-row-key id \\
--num-mappers 2

参数含义解释:

1、-D sqoop.hbase.add.row.key=true
是否将rowkey相关字段写入列族中,默认为false,默认情况下你将在列族中看不到任何row
key中的字段。注意,该参数必须放在import之后。
2、–hbase-create-table 如果hbase中该表不存在则创建
3、–hbase-table 对应的hbase表名
4、–hbase-row-key hbase表中的rowkey,注意格式
5、–column-family hbase表的列族

知识拓展:如何使用SQOOP进行增量导入数据至HBase表,范例命令如下:

/export/servers/sqoop/bin/sqoop import \\
-D sqoop.hbase.add.row.key=true \\
--connect jdbc:mysql://bigdata-cdh01.itcast.cn:3306/tags_dat \\
--username root \\
--password 123456 \\
--table tbl_logs \\
--hbase-create-table \\
--hbase-table tag_logs \\
--column-family detail \\
--hbase-row-key id \\
--num-mappers 20 \\
--incremental lastmodified \\
--check-column log_time \\
--last-value '2019-08-13 00:00:00' \\ 

相关增量导入参数说明:
1、–incremental lastmodified 增量导入支持两种模式 append 递增的列;lastmodified
时间戳
2、–check-column 增量导入时参考的列
3、–last-value 最小值,这个例子中表示导入2019-08-13 00:00:00到今天的值

注:
使用SQOOP导入数据到HBase表中,有一个限制:
需要指定RDBMs表中的某个字段作为HBase表的ROWKEY,如果HBase表的ROWKEY为多
个字段组合,就无法指定,所以此种方式有时候不能使用。

3 另一种常用思路批量导入

大数据Sqoop借助Hive将Mysql数据导入至Hbase
借助到hive生成hfile进行导入.

以上是关于大数据Sqoop将mysql直接抽取至Hbase的主要内容,如果未能解决你的问题,请参考以下文章

Sqoop_具体总结 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入导出

Sqoop将mysql数据导入hbase的血与泪

04 使用Sqoop将mysql数据导入hbase

使用sqoop将MySQL数据库中的数据导入Hbase

使用 talend 或 sqoop 将数据从 hbase 导入 hdfs

大数据开发之Sqoop详细介绍