DataHub 简介
DataHub 类似于传统大数据解决方案中 Kafka 的角色,提供了一个数据队列功能。
DataHub 除了供了一个缓冲的队列作用。同时由于 DataHub 提供了各种与其他阿里云
上下游产品的对接功能,所以 DataHub 又扮演了一个数据的分发枢纽工作。
DataHub 输入组件包括
Flume:主流的开源日志采集框架
DTS:类似 Canal,日志实时监控采集框架
Logstash:也是日志采集框架,通常和 Elasticsearch、Kibana 集合使用
Fluentd:Fluentd 是一个实时开源的数据收集器
OGG:实时监控 Oracle 中数据变化
Java Sdk:支持 JavaAPI 方式访问
DataHub 输出组件包括
RDS:类似与传统 MySQL 数据库
AnalyticDB:面向分析型的分布式数据库
MaxCompute:离线分析框架
Elasticsearch:数据分析,倒排索引
StreamCompute:实时分析框架
TableSotre:类似于 Redis,KV 形式存储数据
OSS:类似于 HDFS,存储图片、视频
创建 DataHub 及 Project
阿里云 DataHub 控制台入口:https://datahub.console.aliyun.com/datahub
相当于安装了 kafka 等待 DTS 同步数据
同步业务数据
进行同步
DTS 同步数据
数据传输服务(Data Transmission Service) DTS 支持关系型数据库、NoSQL、大数据
(OLAP)等数据源间的数据传输。它是一种集数据迁移、数据订阅及数据实时同步于一体的
数据传输服务。数据传输致力于在公共云、混合云场景下,解决远距离、毫秒级异步数据传
输难题。它底层的数据流基础设施为阿里双 11 异地多活基础架构,为数千下游应用提供实
时数据流,已在线上稳定运行 5 年之久。您可以使用数据传输轻松构建安全、可扩展、高可
用的数据架构
业务流程
同步事实表到 DataHub
DTS 购买主页
https://www.aliyun.com/product/dts?spm=5176.12825654.eofdhaal5.66.54212c4aM9dufx
选择 同步链路 micro 相对便宜
点击同步实例 1
这样就拥有了 个 dts 但是还不可用 需要进行配置
配置同步链路
点击左侧需要选择的表
同步初始化中
等待同步初始化完毕 在 datahub 中 查看主题
生成主题数据
CALL init_data('2019-10-09',100,30,false)
创建维度表 数据库
配置同步链路
选择同步对象
预检查
去 SQLyog 中检查
等待一段时间(大约 5 分钟)以后,观察 gmall_dim 数据库中数据
建立视图
在维表库中建立省份和地区视图
CREATE VIEW `dim_province` AS
SELECT
`bp`.`id` AS `province_id`,
`bp`.`name` AS `province_name`,
`br`.`id` AS `region_id`,
`br`.`region_name` AS `region_name`,
`bp`.`area_code` AS `area_code`
FROM `base_region` `br` JOIN `base_province` `bp` ON `br`.`id`
= `bp`.`region_id`
在维表库中建立商品和商品分类视图
CREATE VIEW `dim_sku_info` AS
SELECT
`si`.`id` AS `id`,
`si`.`sku_name` AS `sku_name`,
`si`.`category3_id` AS `c3_id`,
`si`.`weight` AS `weight`,
`si`.`tm_id` AS `tm_id`,
`si`.`price` AS `price`,
`si`.`spu_id` AS `spu_id`,
`c3`.`name` AS `c3_name`,
`c2`.`id` AS `c2_id`,
`c2`.`name` AS `c2_name`,
`c3`.`id` AS `c1_id`,
`c3`.`name` AS `c1_name`
FROM
(
`sku_info` `si` JOIN `base_category3` `c3` ON
`si`.`category3_id` = `c3`.`id`
JOIN `base_category2` `c2` ON `c3`.`category2_id` =
`c2`.`id`
JOIN `base_category1` `c1` ON `c2`.`category1_id` =
`c1`.`id`
)