49.功能 3:订单与维度表的关联

5.1 处理维度数据合并的策略
维度数据和状态数据非常像,但也有不同之处
相同点
长期保存维护
可修改
使用 k-v 方式查询
不同点
数据变更的时机不同
状态数据往往因为事实数据的新增变化而变更
维度数据只会受到业务数据库中的变化而变更
综上
根据共同点,维度数据也是非常适合使用 hbase 存储的,稍有不同的是维度数据必须
启动单独的实时计算来监控维度表变化来更新实时数据。
5.2 维度表的读取
5.2.1 通过 phoenix 在 Hbase 中建表
(1)创建省份表

 (2)创建用户表

5.2.2 创建样例类
(1)省份样例类 ProviceInfo

 (2)用户样例类

5.2.3 创建 SparkStreaming 读取省份维度数据
(1)读取省份维度数据类 ProvinceInfoApp

 

 

 (2)读取用户维度数据类 UserInfoApp

 

 

 

 

5.2.4 测试 1
运行 BaseDBMaxwellApp、ProvinceInfoApp、UserInfoApp 同步数据
,随便修改数据库
base_province,user_info 表中的一条数据,查看 hbase 中的结果。

 5.2.5 利用 maxwell-bootstrap 初始化数据

初始化省份表
bin/maxwell-bootstrap --user maxwell --password 123456 --host hadoop202
--database gmall2020 --table base_province --client_id maxwell_1
初始化用户表
bin/maxwell-bootstrap --user maxwell --password 123456 --host hadoop202
--database gmall2020 --table user_info --client_id maxwell_1
--user maxwell
数据库分配的操作 maxwell 数据库的用户名
--password 123456
数据库分配的操作 maxwell 数据库的密码
--host
数据库主机名
--database
数据库名
--table
表名
--client_id
maxwell-bootstrap 不具备将数据直接导入 kafka或者 hbase 的能力,通过--client_id
指定将数据交给哪个 maxwell 进程处理,在 maxwell 的 conf.properties 中配置

 

5.2.6 测试 2
运行 BaseDBMaxwellApp、ProvinceInfoApp、UserInfoApp 同步数据
在 maxwell 执行 bin/maxwell-bootstrap 脚本
注意:BaseDBMaxwellApp 会出现异常

 

是因为使用 bin/maxwell-bootstrap 同步原始数据的时候,会生成两条标记起始和结
束的 json 字符串,这两条数据的 data 属性是 null 的,并且 type 属性也和原来的标记
不一样,例如:插入操作标记位 bootstrap-insert
解决:修改 BaseDBMaxwellApp 分流的代码

 

因为前面产生了空数据,那么 ProvinceInfoApp 和 UserInfoApp 在保存到 Hbase 的
时候,可能会报错,可以先注释掉 saveToPhoenix 的操作,运行程序,消费 kafka 的
错误数据,改变偏移量
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据开发工程师-宋权

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值