一种基于Flink状态的实时数仓建设方法技术

技术编号:34182463 阅读:94 留言:0更新日期:2022-07-17 13:25
本发明专利技术公开了一种基于Flink状态的实时数仓建设方法,其特征在于,包括:步骤1:创建并初始化Flink状态,获取Kudu中各表的表名、字段和类型;步骤2:对Flink中的实时用户行为日志进行解析,将解析结果保存为json格式数据;步骤3:对于json格式数据,判断事件属性是否包含在当前的Flink状态中;步骤4:对解析后的数据做预处理,保存为json格式数据,并写入消息订阅系统;步骤5:订阅数据,将json格式数据完全展开,并将展开结果写入Kudu中。达到实时解析成结构化数据的效果,分发topic,落盘Kudu,实时增加日志中新的埋点字段,以供业务实时查看新增埋点数据情况,提高业务效率,发挥出数仓更大的价值。大的价值。大的价值。

【技术实现步骤摘要】
一种基于Flink状态的实时数仓建设方法


[0001]本专利技术涉及计算机技术的数据仓库领域,特别是涉及一种基于Flink状态的实时数仓建设方法。

技术介绍

[0002]近些年,Kudu在大数据平台的应用越来越广泛。在阿里、小米、网易等公司的大数据架构中,Kudu都有着不可替代的地位,是一个既支持随机读写、又支持OLAP分析的大数据存储引擎,对实时数仓十分友好。
[0003]时效性、稳定性、准确性是数据必不可少的要素,Flink因其在实时数仓中优异的性能受到各大公司的喜爱。但目前大多数Flink+Kudu结构的实时数仓只能做到实时解析日志,形成结构化数据,针对各公司埋点业务,若想要实时查看新增埋点数据情况,只能提前增加实时数仓中新埋点的字段及类型,然后库表中该字段才会有数值,这期间会耽误部分时间,如果需要立即查看到新增埋点的数据情况,就需要在一般实时数仓的基础上,做出更有建设性的改进。
[0004]专利CN202010898539

基于Flink流式处理的用户行为统计分析方法,提出了Flink+Kafka+SDK埋点的概念,但该专利重点介绍一般的基于Flink的流式计算,并未涉及到底层的实时数仓建设,如实时数据最终的存储方式、数仓中对IP、UserAgent等通用指标的解析,技术人员难以通过本领域的通识直接进行应用。
[0005]专利CN201911411864

信贷风控特征变量管理的方法及系统,提出了Flink+Kudu数仓的概念,涉及Jason解析数据,但该专利中是提前将源数据schema信息进行上传至元数据管理系统后再对元数据进行解析,该方法只能解析提前定义好的源数据,每次新增新的源数据信息如新增埋点字段,就需要频繁的更新管理系统文档,业务方与开发人员需要频繁联动,效率低下。
[0006]专利CN202011079858

一种基于Kafka的埋点数据实时采集计算和存储的方法,提出了以Key

Value形式解析的SDK埋点采集系统在Kafka结合Flink中的应用,以解决实时埋点需求,但该专利使用的存储数据库是Hbase,一方面Hbase拥有良好的查询性能,但架构设计复杂,且使用HDFS作为分布式存储,因此存储数据,尤其是大量数据时,存储性能较差,另一方面,该专利在对实时数据入数仓时并未对埋点字段数值的类型进行判断,后续任务在使用数据时,无法第一时间得到准确的数值类型。
[0007]综合上述现有技术来看,现有Flink+Kudu实时数仓技术尚不能实时根据埋点内容增加字段(字段名和字段类型),或者动态增加字段的效率过低。因此,需要一种更高效适用的基于Flink状态的实时数仓建设方法。

技术实现思路

[0008]本专利技术所要解决的技术问题是克服现有技术的不足,提供一种基于Flink状态动态增加Kudu字段的实时数仓建设方法,在一般Flink实时数仓的基础上,利用Flink状态,针
对用户行为日志,不仅能够做到实时解析成结构化数据,分发topic供业务订阅,落盘Kudu,并且能够实时增加日志中新的埋点字段,供业务实时查看新增埋点数据情况,从而提高业务效率,发挥出更大的价值。
[0009]为解决上述技术问题,本专利技术提供一种基于Flink状态动态增加Kudu字段的实时数仓建设方法,其特征在于,包括以下步骤:
[0010]步骤1:从消息订阅系统中订阅数据作为Flink任务中的Source,创建Flink状态,所述Flink状态的存储内容包括Kudu中各表的表名、字段和类型,任务开始时,初始化Flink状态,获取Kudu中各表的表名、字段和类型;
[0011]步骤2:对Flink中的实时用户行为日志进行解析,将解析结果以埋点事件、事件属性和属性的值的形式保存为json格式数据,所述事件属性记为Key,所述属性的值记为Value;
[0012]步骤3:对于步骤2中的json格式数据,判断事件属性是否包含在当前的Flink状态中;如果是,则解析结果进入步骤4;如果不是,则对该事件属性对应的属性的值进行判定,将该埋点事件的字段及其类型添加至Kudu,并旁路输出至Kudu的一个新增字段中作为记录,更新Flink状态,解析结果进入步骤4;
[0013]步骤4:对解析结果做预处理,所述预处理包括IP解析、UserAgent解析,将预处理后的数据以埋点事件、事件属性和属性的值的形式保存为json格式数据,并写入消息订阅系统;
[0014]步骤5:订阅步骤4中消息订阅系统的数据,将json格式数据完全展开,去除字段值为null的数据,并将展开结果写入Kudu中。
[0015]所述步骤1中,所述消息订阅系统为kafka实时数据源,所述Flink状态的数据结构为new MapStateDescriptor[String,mutable.Map[String,Type]];初始化Flink状态为:MapStateDescriptor[micen_table,mutable.Map[distinct_id

>String]]。
[0016]所述步骤2中包括,将解密的加密日志和解压的压缩日志展开获得埋点字段,解析成Key

value的json格式形式,其中,Value的类型根据埋点的字段类型进行判断,映射成Kudu相对应的字段类型并保存。
[0017]所述步骤3中,判断事件属性是否包含在当前的Flink状态中包括:对步骤2中的json格式数据中的每个事件属性,以集合{distinct_id,lib}的形式与Flink状态中的字段名集合{distinct_id}进行对比,用以判断埋点字段是否存在Flink状态中,得到一个字段差集{lib},其中,lib是新增的埋点字段,在将Json格式数据写入Kudu之前,判断该埋点值的数值类型并在Flink状态中添加新增的埋点字段及其类型,利用自定义的Java API将新增的埋点字段及其类型新增至Kudu,初始化Flink状态,重新读取Kudu表中各表的表名、字段和类型的Schema,所述Flink状态初始化为:
[0018]MapStateDescriptor[micen_table,mutable.Map[distinct_id

>string,lib_id

>string]]。
[0019]所述步骤4中,所述预处理包括,在IP解析中,以预设的周期定时从IP数据库链接下载更新IP数据库,若下载失败,则使用原先的IP数据库,并发出IP下载失败告警,基于IP地址库,自定义IP解析方法,输入IP,输出用户行为数据,在UserAgent解析中,根据UserAgent解析包解析出UserAgent延伸出的浏览器信息及其版本数据,用以扩展数仓数
据。
[0020]所述步骤5中,所述Kudu数据刷新的模本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Flink状态的实时数仓建设方法,其特征在于,包括以下步骤:步骤1:从消息订阅系统中订阅数据作为Flink任务中的Source,创建Flink状态,所述Flink状态的存储内容包括Kudu中各表的表名、字段和类型,任务开始时,初始化Flink状态,获取Kudu中各表的表名、字段和类型;步骤2:对Flink中的实时用户行为日志进行解析,将解析结果以埋点事件、事件属性和属性的值的形式保存为json格式数据,所述事件属性记为Key,所述属性的值记为Value;步骤3:对于步骤2中的json格式数据,判断事件属性是否包含在当前的Flink状态中;如果是,则解析结果进入步骤4;如果不是,则对该事件属性对应的属性的值进行判定,将该埋点事件的字段及其类型添加至Kudu,并旁路输出至Kudu的一个新增字段中作为记录,更新Flink状态,解析结果进入步骤4;步骤4:对解析结果做预处理,所述预处理包括IP解析、UserAgent解析,将预处理后的数据以埋点事件、事件属性和属性的值的形式保存为json格式数据,并写入消息订阅系统;步骤5:订阅步骤4中消息订阅系统的数据,将json格式数据完全展开,去除字段值为null的数据,并将展开结果写入Kudu中。2.如权利要求1所述的一种基于Flink状态的实时数仓建设方法,其特征在于:所述步骤1中,所述消息订阅系统为kafka实时数据源,所述Flink状态的数据结构为new MapStateDescriptor[String,mutable.Map[String,Type]];初始化Flink状态为:MapStateDescriptor[micen_table,mutable.Map[distinct_id

>String]]。3.如权利要求2所述的一种基于Flink状态实时数仓建设方法,其特征在于:所述步骤2中包括,将解密的加密日志和解压的压缩日志展开获得埋点字段,解析成Key

value的json格式形式,其中,Value的类型根据埋点的字段类型进行判断,映射成Kudu相对应的字段类型并保存。4.如权利要求3所述的一种...

【专利技术属性】
技术研发人员:沈浩成俊杰
申请(专利权)人:焦点科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1