- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
基于Flink的实时特征平台
展开查看详情
1 .基于Flink的实时特征平台 姓名:刘康 公司:携程 职位:技术中心大数据资深研发工程师
2 . 平台开发背景 01 及平台现状
3 .原实时特征作业的开发运维 计算平台:依据项目的性能指标(latency,throughput等),在已有的实时计算 平台:Storm或Spark中选择 开发运维流程 1. 80%以上的作业需要用到消息队列数据源,但是消息是非结构化数据且没有统一 的数据字典,需要通过消费对应的topic,解析消息和确定所需的内容 2. 基于需求中的场景,设计开发计算逻辑 3. 在实时数据不能完全满足数据需求的情况,开发单独的离线作业以及融合逻辑 4. 设计开发数据的校验和纠错逻辑 5. 测试上线&监控和预警 平均每个作业耗时:3天-5天
4 .痛点 • 消息队列数据源结构没有统一的数据字典 • 特征计算逻辑高度定制化,开发测试周期长 • 实时数据不能满足需求时,需要定制离线作业和融合逻辑 • 校验和纠错方案没有形成最佳实践,实际效果比较依赖个人能力 • 监控和预警方案需要基于业务逻辑定制
5 .平台的⽬目标 • 实时数据字典:提供统一的数据源注册、管理功能,支持单一结构消息的 topic和包含多种不同结构消息的topic • 逻辑抽象:抽象为SQL,减少工作量&降低使用门槛 • 特征融合:提供融合特征的功能 • 数据校验和纠错:提供离线数据校验和纠错实时特征的功能 • 实时计算延迟:ms级 • 实时计算容错:端到端 exactly-once • 统一的监控预警和HA方案
6 .特征平台系统架构
7 .平台功能展示-数据源注册
8 .实时特征编辑-基本信息
9 .实时特征编辑-数据源选择
10 .实时特征编辑-SQL计算
11 .实时特征编辑-选择输出
12 .实时特征编辑-选择可选的输出
13 .02 选择Flink的原因
14 . spark storm Structured flink V1.2.2 Streaming v1.5 v2.3.1 MicroBatch Streaming 100ms级 Streaming 延迟 ms级 Streaming ms级 ms级(实验) Ack CheckPoint&WAL CheckPoint&SavePoint 容错 atLeastOnce exactlyOnce exactlyOnce SQL成熟度 dis?nct、limit、order (Unsupported aggrega?on、join dis?nct aggregate by(par?al) Func>ons)
15 .03 Flink实践
16 .使⽤用⽤用例例 会话窗口用途广泛,可以用于推荐召回、用户召回等;原设计⽅案需要使⽤分布式锁 SessionWin 做进程间的并发控制,复杂度高 select user,count(ts) from vac_ts group by SESSION(userEventTime_ts, INTERVAL '10' SECOND),user External 实时计算job执行异常设置的重启策略无法恢复需要修复bug时,如果设置了 CheckPoint externalCheckPoint,很大几率保证exactly Once的语义
17 .兼容开发 AS Async 基于flink Asynchronous I/O开发(支持exactlyOnce语义) Upsert 异步写入AS TableSink 写入AS成功后可选择push key至Kafka 支持Upsert Stream的TableSink UDF-AS 通过定义Table Function类型的UDF支持,SQL中用到AS数据的情况 Table Functions 示例: SELECT ID, cityId, cityName FROM product LEFT JOIN LATERAL TABLE(asGetBins(productId)) as T(cityId,cityName) ON TRUE AS=Aerospike
18 .碰到的坑 内部默认反序列化JSON中SQL_TIMESTAMP类型时,值必须是格式为yyyy-MM- SQL_TIMESTAMP dd’T'HH:mm:ss.SSS'Z'的字符串 场景:直接使用StreamTableEnvironment的方法registerTableSource注册表时,表 中的时间属性(eventTime)字段的类型需要配置为SQL_TIMESTAMP 窗口的offset需要⼩于winSize,不能⽤于时区适配 SlidingWin 下面是当前计算win的start值的公式 Offset timestamp - (timestamp - offset + windowSize) % windowSize
19 .04 平台当前效果 &未来规划
20 .特征平台当前效果&规划 • 当前效果:将实时特征上线周期从原平均3天-5天降至小时级 • 未来规划: 1. 完善特征平台的功能:融合特征等 2. 简化步骤,提高用户体验 3. 根据需求,进一步完善SQL的功能例如支持win的开始时间offset,可以 通过countTrigger的win等
21 .模型⽣生态的进⼀一步规划
22 .Thanks !