Scala 练习一 将Mysql表数据导入HBase
源码仓库地址:https://gitee.com/leaf-domain/data-to-hbase
图片无法加载请跳转CSDN:Scala 练习一 将Mysql表数据导入HBase-CSDN博客
一、整体介绍
HBase
特质连接HBase, 创建HBase执行对象
- 初始化配置信息:多条(hbase.zookeeper.quorum=>ip:2181)
Configuration conf = HBaseConfiguration.create()
conf.set(String, String) - 创建连接:多个连接(池化)
Connection con = ConnectionFactory.createConnection() - 创建数据表:表名: String
Table table = con.getTable(TableName)
1
2
3def build(): HBase // 初始化配置信息
def initPool(): HBase // 初始化连接池
def finish(): Executor // 完成 返回执行对象- 初始化配置信息:多条(hbase.zookeeper.quorum=>ip:2181)
Executor
特质对HBase进行操作的方法: 包含如下函数
1
2
3
4def exists(tableName: String): Boolean // 验证数据表是否存在
def create(tableName: String, columnFamilies: Seq[String]): Boolean // 创建数据表
def drop(tableName: String): Boolean // 删除数据表
def put(tableName: String, data: util.List[Put]): Boolean // 批量插入数据Jdbc
封装Jdbc封装
- 初始化连接
driver : com.mysql.cj.jdbc.Driver
参数:url, username, password
创建连接 - 初始化执行器
sql, parameters
创建执行器【初始化参数】 - 执行操作并返回【结果】
DML: 返回影响数据库表行数
DQL: 返回查询的数据集合
EX: 出现异常结果
- 初始化连接
MyHBase
用于实现HBase
和Executor
特质测试数据格式
mysql表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `test_table_for_hbase`;
CREATE TABLE `test_table_for_hbase` (
`test_id` int NULL DEFAULT NULL,
`test_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`test_age` int NULL DEFAULT NULL,
`test_gender` varchar(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`test_phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
INSERT INTO `test_table_for_hbase` VALUES (1, 'testName1', 26, 'male', '18011111112');
INSERT INTO `test_table_for_hbase` VALUES (2, 'testName2', 25, 'female', '18011111113');
INSERT INTO `test_table_for_hbase` VALUES (3, 'testName3', 27, 'male', '18011111114');
INSERT INTO `test_table_for_hbase` VALUES (4, 'testName4', 35, 'male', '18011111115');
-- .... 省略以下数据部分hbase表
1
2
3
4# 创建表 库名:表名, 列族1, 列族2
create "hbase_test:tranfer_from_mysql","baseInfo","scoreInfo"
truncate 'hbase_test:tranfer_from_mysql' # 清空hbase_test命名空间下的tranfer_from_mysql表
scan 'hbase_test:tranfer_from_mysql' # 查看表
二、依赖
1 |
|
三、测试结果
终端有个日志的小警告(无伤大雅hh),输出为 true
查看hbase表,发现数据正常导入
四、源码
scala代码较简单这里直接上源码了,去除了部分注释,更多请去仓库下载
Executor
1 |
|
HBase
1 |
|
MyHBase
1 |
|
Jdbc
1 |
|
Test
1 |
|
Scala 练习一 将Mysql表数据导入HBase
https://leaf-domain.gitee.io/2024/08/04/bigdata/scala/scala-ex/