ToB企服应用市场:ToB评测及商务社交产业平台

标题: 基于Flink搭建流式湖仓OpenLake方案 [打印本页]

作者: 圆咕噜咕噜    时间: 2024-11-12 10:37
标题: 基于Flink搭建流式湖仓OpenLake方案
OpenLake解决方案建立在开放可控的OpenLake湖仓之上,提供大数据搜索与AI一体化服务。通过元数据管理平台DLF管理布局化、半布局化和非布局化数据,提供湖仓数据表和文件的安全访问及IO加速,并支持大数据、搜索和AI多引擎对接。本文为您介绍以Flink作为Openlake方案的焦点计算引擎,通过流式数据湖仓Paimon(使用DLF 2.0存储)和分析型数据库StarRocks搭建流式湖仓。
方案架构和上风

架构

传统的离线数仓通过定时调理离线作业的方式,存在延时长和成本高两大问题。离线作业的调理通常每小时甚至每天才举行一次,数据的消耗者仅能看到上一小时甚至昨天的数据。同时,数据的更新多以覆写(overwrite)分区的方式举行,须要重新读取分区中原有的数据,才能与奇怪变更合并,产生新的效果数据。
基于实时计算Flink版、流式数据湖仓Paimon(使用DLF 2.0作为元数据存储)和EMR StarRocks的OpenLake方案搭建流式湖仓可以解决上述传统离线数仓存在的问题。利用Flink的实时计算能力,数据可以在数仓分层之间实时流动;利用Paimon高效的更新能力,数据变更可以在分钟级的延时内传递给卑鄙消耗者;末了由StarRocks提供查询分析服务。Paimon与Flink深度集成,提供一体化的流式湖仓团结解决方案,在延时和成本上具有双重上风。本文搭建流式湖仓的方案架构如下:


上风

该方案有如下上风:

该方案依靠于Paimon的三个焦点能力,详情如下表所示。
Paimon焦点能力
详情
主键表更新
Paimon底层使用LSM Tree数据布局,可以实现高效的数据更新。
关于Paimon主键表、Paimon底层数据布局的介绍请拜见Primary Key Table和File Layouts。
增量数据产生机制(Changelog Producer)
Paimon可以为任意输入数据流产生完整的增量数据(所有的update_after数据都有对应的update_before数据),保证数据变更可以完整地传递给卑鄙。详情请拜见增量数据产生机制。
数据合并机制(Merge Engine)
当Paimon主键表收到多条具有相同主键的数据时,为了保持主键的唯一性,Paimon效果表会将这些数据合并成一条数据。Paimon支持去重、部分更新、预聚合等丰富多样的数据合并行为,详情请拜见数据合并机制。
实践场景

本文以某个电商平台为例,通过搭建一套流式湖仓,实现数据的加工洗濯,并支持上层应用对数据的查询。流式湖仓实现了数据的分层和复用,并支撑各个业务方的报表查询(交易大屏、行为数据分析、用户画像标签)以及个性化保举等多个业务场景。


条件条件


说明
StarRocks实例、DLF数据目次须要与Flink工作空间处于相同地域。
使用限定

仅实时计算引擎VVR 8.0.9及以上版本支持该流式湖仓方案。
OpenLake数据摄取

预备MySQL数据源

本文以云数据库RDS MySQL版为例,创建数据库名称为order_dw,并创建三张业务表及数据。
创建MySQL Catalog

创建Paimon Catalog

构建ODS层:业务数据库实时入仓

基于CREATE DATABASE AS(CDAS)语句功能,可以一次性将ODS层建出来,实现MySQL数据同步至Paimon。
OpenLake数据ETL加工

构建DWD层:主题宽表

构建DWS层:指标计算

捕获业务数据库的变革

前面已完成了流式湖仓的构建,下面将测试流式湖仓捕获业务数据库变革的能力。
OpenLake数据查询分析

上一小节展示了在Flink中举行Paimon Catalog的创建与Paimon表的写入。本节展示流式湖仓搭建完成后,利用StarRocks举行数据分析的一些简单应用场景。
您须要登录StarRocks实例,并已完成创建oss-paimon的catalog,详情请拜见Paimon数据源。
创建示例
排名查询

对DWS层聚合表举行分析。本文使用StarRocks查询23年2月15日交易额前三高的商户的代码示比方下。

  1. SELECT ROW_NUMBER() OVER (ORDER BY payed_buy_fee_sum DESC) AS rn, shop_id, payed_buy_fee_sum
  2. FROM dws_shops
  3. WHERE ds = '20230215'
  4. ORDER BY rn LIMIT 3;
复制代码


明细查询

对DWD层宽表举行分析。本文使用StarRocks查询某个客户23年2月特定支付平台支付的订单明细的代码示比方下。

  1. SELECT * FROM dwd_orders
  2. WHERE order_create_time >= '2023-02-01 00:00:00' AND order_create_time < '2023-03-01 00:00:00'
  3. AND order_user_id = 'user_001'
  4. AND pay_platform = 0
  5. ORDER BY order_create_time;;
复制代码


数据报表

对DWD层宽表举行分析。本文使用StarRocks查询23年2月内每个品类的订单总量和订单总金额的代码示比方下。

  1. SELECT
  2.   order_create_time AS order_create_date,
  3.   order_product_catalog_name,
  4.   COUNT(*),
  5.   SUM(order_fee)
  6. FROM
  7.   dwd_orders
  8. WHERE
  9.   order_create_time >= '2023-02-01 00:00:00'  and order_create_time < '2023-03-01 00:00:00'
  10. GROUP BY
  11.   order_create_date, order_product_catalog_name
  12. ORDER BY
  13.   order_create_date, order_product_catalog_name;
复制代码



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4