基于Flink的用户画像 OLAP 实时数仓统计分析

1.基于Flink的用户画像 OLAP 实时数仓统计分析

  • 数据源是来自业务系统的T日数据,利用kakfa进行同步

  • 拼接多个事实表形成大宽表,优化多流Join方式,抽取主键和外键形成主外键前置层,抽取外键和其余内容形成融合层,将4次事实表关联优化称为1次关联,减轻shuffle带来的网络传输,降低延迟和关联state的存储压力

  • 维表采用hbase,存储时采用hash打散rowkey,写入预分区中

      HBase的默认RowKey设计可能导致数据集中在单一Region,易因RowKey分布不均导致RegionServer热点问题。通过散列算法(如MD5、SHA1或简单取模)为RowKey添加固定长度前缀,将数据均匀分散到不同Region中。 具体步骤:

      优化效果

    • 散列前缀生成:例如,对用户ID取哈希值并取模(hash(user_id) % N),生成固定长度的前缀(如00|01|)。

    • 预分区设计:根据散列范围预建Region,例如使用HexStringSplit或自定义分区策略(如SPLITS => ['0|','1|','2|',...]),确保数据均匀分布

    • RowKey拼接:将散列前缀与原始RowKey拼接(如hash_prefix + original_rowkey),写入HBase时自动路由到目标Region。

    • 避免单一Region的写入/查询热点,提升并发吞吐量。

    • 结合预分区减少Region Split频率,降低I/O开销

      原rowkeyhash化后的rowkey
      506573390_1474947840000ffcbf35613ec83d2ad15ea08576ec496_1474947840000
    • flink读取时只需要将截取后半段和rowkey关联就行

    • 根据用户交易、评价等行为分析用户画像,定义flinkcep模式,计算用户风险等级

       

      SELECT * FROM daily_metrics MATCH_RECOGNIZE ( PARTITION BY user_id ORDER BY window_start MEASURES SUM(A.daily_failed_trans) AS total_failed, SUM(B.daily_high_payment) AS total_high_payment, LAST(C.daily_negative_review) AS last_negative_review, CASE WHEN SUM(A.daily_failed_trans) >=1 AND SUM(B.daily_high_payment) >=1 AND LAST(C.daily_negative_review) >=1 THEN 'HIGH' ELSE 'LOW' END AS risk_level PATTERN (A+ B+ C) WITHIN INTERVAL '7' DAY -- 7天内模式匹配 DEFINE A AS daily_failed_trans >= 1, -- 至少1次失败交易 B AS daily_high_payment >= 1, -- 至少1次大额支付(金额>1万) C AS daily_negative_review >= 1 -- 至少1次差评(评分≤2) );

      模式详解

      • A+:匹配连续多日(≥1天)的失败交易

      • B+:匹配连续多日(≥1天)的大额支付

      • C:匹配最后1次差评事件

      • WITHIN限制整体时间窗口为7天

      • 高风险用户写入redis中,提供接口供风控单位调用,全量用户写入doris,上层利用BI可视化工具提供OLAP服务

      本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
      如若转载,请注明出处:http://www.pswp.cn/pingmian/80737.shtml
      繁体地址,请注明出处:http://hk.pswp.cn/pingmian/80737.shtml

      如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

      相关文章

      Java游戏服务器开发流水账(7)网络通信简介

      在 Java 游戏服务器开发中,网络通讯是核心组成部分,它主要负责客户端与服务器之间的数据交换。 一、网络通讯基础 1. 网络模型 C/S 架构:游戏服务器采用客户端 / 服务器模式,客户端向服务器发送请求,服务器处理请求…

      使用ADB命令操作Android的apk/aab包

      keystore文件转换jks文件 操作步骤: 步骤1,生成P12文件: keytool -importkeystore -srckeystore [文件名].keystore -srcstoretype JKS -deststoretype PKCS12 -destkeystore [文件名].p12 步骤2,生成jks文件: keytool…

      图文展示HDFS、YARN、MapReduce三者关系

      MapReduce架构概述 MapReduce将计算过程分为两个阶段:Map和Reduce (1)Map阶段并行处理输入数据 (2)Reduce阶段对Map结果进行汇总 HDFS、YARN、MapReduce三者关系

      DL00219-基于深度学习的水稻病害检测系统含源码

      🌾 基于深度学习的水稻病害检测系统 — 智能农业的未来,守护农田的每一寸土地! 🚜 完整系统获取见文末 水稻病害检测,一直是农业领域的一大难题。传统的人工检测不仅耗时耗力,还容易因经验不足导致漏检或误…

      github 上的 CI/CD 的尝试

      效果 步骤 新建仓库设置仓库的 page 新建一个 vite 的项目,改一下 vite.config.js 中的 base 工作流 在项目的根目录下新建一个 .github/workflows/ci.yml 文件,然后编辑一下内容 name: Build & Deploy Vue 3 Appon:push:branches: [main]permi…

      鸿蒙5.0项目开发——鸿蒙天气项目的实现(介绍)

      【高心星出品】 文章目录 项目简介:项目运行效果图:主要功能:使用的技能点:开发环境: 项目简介: 这是一个基于鸿蒙系统(HarmonyOS)开发的天气应用,采用 ArkTS 语言开发&…

      SpringCloud之Eureka基础认识-服务注册中心

      0、认识Eureka Eureka 是 Netflix 开源的服务发现组件,后来被集成到 Spring Cloud 生态中,成为 Spring Cloud Netflix 的核心模块之一。它主要用于解决分布式系统中​​服务注册与发现​​的问题。 Eureka Server 有必要的话,也可以做成集群…

      【氮化镓】电子辐照下温度对GaN位移阈能的影响

      2024年,华东师范大学的彭胜国等人基于从头算分子动力学(AIMD)方法,研究了低能电子束辐照下温度对氮化镓(GaN)位移阈能(TDE)的影响。实验结果表明,在初始动能40至80 eV的范围内,镓(Ga)和氮(N)原子作为初级击出原子(PKAs)引发的位移对温度呈现不同的敏感性:Ga 的…

      Java 中的数据类型误导点!!!

      在 Java 中,数据类型分为两大类:基本类型(Primitive Types) 和 引用类型(Reference Types)。它们的存储方式和行为完全不同。 1. 基本类型 Java 有 8 种基本数据类型,它们直接存储值&#xff…

      二次封装 el-dialog 组件:打造更灵活的对话框解决方案

      文章目录 引言为什么需要二次封装?封装思路代码实现1. 基础封装组件 (Dialog.vue)2. Vue中引入使用示例 封装后的优势进阶优化建议 总结 引言 在 Vue 项目中,Element UI 的 el-dialog 是一个非常实用的对话框组件。但在实际开发中,我们经常会…

      框架篇八股(自用)

      框架篇 Spring框架中的bean不是线程安全的 Scope() singleton单例 prototype多例 一个类中有可修改的成员变量需要考虑线程安全 bean没有可变状态(service类,DAO类) 某种程度单例bean是线程安全的 AOP面向切面编程…

      Go语言安装proto并且使用gRPC服务(2025最新WINDOWS系统)

      1.protobuf简介 protobuf 即 Protocol Buffers,是一种轻便高效的结构化数据存储格式,与语言、平台无关,可扩展可序列化。protobuf 性能和效率大幅度优于 JSON、XML 等其他的结构化数据格式。protobuf 是以二进制方式存储的,占用空…

      rust-candle学习笔记11-实现一个简单的自注意力

      参考:about-pytorch 定义ScaledDotProductAttention结构体: use candle_core::{Result, Device, Tensor}; use candle_nn::{Linear, Module, linear_no_bias, VarMap, VarBuilder, ops};struct ScaledDotProductAttention {wq: Linear,wk: Linear,wv: …

      spark MySQL数据库配置

      Spark 连接 MySQL 数据库的配置 要让 Spark 与 MySQL 数据库实现连接,需要进行以下配置步骤。下面为你提供详细的操作指南和示例代码: 1. 添加 MySQL JDBC 驱动依赖 你得把 MySQL 的 JDBC 驱动添加到 Spark 的类路径中。可以通过以下两种方式来完成&a…

      web 自动化之 KDT 关键字驱动详解

      一、什么是关键字驱动? 1、什么是关键字驱动?(以关键字函数驱动测试) 关键字驱动又叫动作字驱动,把项目业务封装成关键字函数,再基于关键字函数实现自动化测试 2、关键字驱动测试原理 关键字驱动测试是一…

      Java使用POI+反射灵活的控制字段导出Excel

      前端传入哪些字段,后端就导出哪些到Excel表格中,具体代码实现如下 controller /*** 用户导出* param dto*/PostMapping("/exportUser")public void exportCharterOrder(RequestBody UserExportDTO dto){userService.exportUser(dto);} serv…

      Qt/C++面试【速通笔记八】—Qt的事件处理机制

      在Qt中,事件处理机制是应用程序与用户或系统交互的核心。通过事件处理,Qt能够响应用户的输入、窗口的变化、定时器的触发等各种情况。 1. 事件循环(Event Loop) 在Qt应用程序中,事件循环是事件处理机制的基础。事件循…

      TTL (Time-To-Live) 解析

      文章目录 TTL (Time-To-Live) 解析:网络与Java中的应用一、TTL的定义二、TTL在网络中的应用1. **路由和数据包的生命周期**2. **DNS中的TTL**3. **防止环路** 三、TTL在Java中的应用1. **缓存管理**2. **Java中的ThreadLocal**3. **网络通信中的TTL** 四、TTL的注意…

      HDFS的客户端操作(2)文件上传

      我们向/maven下上传一个文件。 要用到的api是put (或者copyFormLocalFile)。核心代码如下。 public void testCopyFromLocalFile() throws IOException, InterruptedException, URISyntaxException {// 1 获取文件系统Configuration configuration new Configurati…

      光谱相机的光电信号转换

      光谱相机的光电信号转换是将分光后的光学信息转化为可处理的数字信号的核心环节,具体分为以下关键步骤: 一、分光后光信号接收与光电转换 ‌分光元件作用‌ 光栅/棱镜/滤光片等分光元件将入射光分解为不同波长单色光,投射至探测器阵列表面…