CN114546274A - 一种基于缓存的大数据处理维表存算系统及其方法 - Google Patents

一种基于缓存的大数据处理维表存算系统及其方法 Download PDF

Info

Publication number
CN114546274A
CN114546274A CN202210165044.4A CN202210165044A CN114546274A CN 114546274 A CN114546274 A CN 114546274A CN 202210165044 A CN202210165044 A CN 202210165044A CN 114546274 A CN114546274 A CN 114546274A
Authority
CN
China
Prior art keywords
data
module
redis
dimension table
flink
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202210165044.4A
Other languages
English (en)
Other versions
CN114546274B (zh
Inventor
赵永振
马上坤
高驰涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cloudwise Beijing Technology Co Ltd
Original Assignee
Cloudwise Beijing Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cloudwise Beijing Technology Co Ltd filed Critical Cloudwise Beijing Technology Co Ltd
Priority to CN202210165044.4A priority Critical patent/CN114546274B/zh
Publication of CN114546274A publication Critical patent/CN114546274A/zh
Application granted granted Critical
Publication of CN114546274B publication Critical patent/CN114546274B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于缓存的大数据处理维表存算系统及其方法,其中大数据处理维表存算系统包括数据存储模块、维表配置模块、Redis连接管理模块、数据类型转换模块、主键处理模块、普通字段处理模块、数据写入模块、数据关联模块和Flink集成模块;通过Redis能够明显提升数据处理速度和吞吐量,解决数据处理延迟问题,Redis维表能够消除因关联数据过大而导致的内存溢出问题;并且能够提供Flink SQL方式操作读写Redis数据,封装单机、集群、哨兵、代理模式Redis服务,统一服务接口和大数据开发技术栈,提高大数据开发便捷性。

Description

一种基于缓存的大数据处理维表存算系统及其方法
技术领域
本发明涉及大数据技术领域,具体涉及一种基于缓存的大数据处理维表存算系统及其方法。
背景技术
随着信息技术的蓬勃发展,在各行各业的数字化转型的大趋势下,企业的数据规模越来越大,传统的数据处理技术已经不能满足海量数据的实时处理诉求,得益于hadoop、Spark、Flink等大数据处理技术的不断发展和演进,数据以更高的吞吐量和更低的处理时延被处理,因此快速的处理速度是最大化提取数据价值的关键。技术迭代也使得数据的处理的方式变得越来越简单便捷,大数据开发技术从最开始的Java、Scala发展到Python、SQL。当前,Flink实时处理技术正以其高吞吐、低时延的处理性能和SQL式、流批一体化的简易开发模式引领了大数据技术的发展与革新。数据处理过程中的维表关联效率是影响计算结果时效性和准确性的关键因素,因维表数据量过大导致的内存溢出、处理超时、关联失败等问题一直是大数据开发的难点,在海量数据的情况下,要实现高吞吐、低时延的维表关联必须要使用高性能、可扩展的缓存存储服务。业内常用维表存储服务有HBase、MySQL、Redis等,其中HBase和MySQL由Flink官方支持,提供SQL式数据写入、关联方案,MySQL做维表的优势在于其具备完善的数据格式和灵活的关联语意,但受限于MySQL的数据读写性能,仅支持小数据量情况下的数据关联,无法支撑大数据量、高并发的读和写;而HBase采用了LSM数据结构,底层存储使用HDFS,对于海量数据的写入有比较好的性能表现,但读取性能不是很高;Redis是使用C语言开发的基于内存、分布式的键值对存储数据库,使用内存存储避免了低速的磁盘操作,使得Redis的数据读写都很快速,分布式的特性让Redis可以支撑大数据量的并发访问,但由于Redis并未被Flink官方支持,业内在使用Redis做维表时大都使用Java编码,调用Redis的API操作数据读写,或者是编写UDF,使用Flink SQL调用。这两种解决方案都需要Java编码且不支持代码复用、操作繁琐,不利于技术栈的统一和代码、任务的维护。
因此需要提供一种基于缓存的大数据处理维表存算系统及其方法,从而实现提升维表关联效率、统一服务接口和大数据开发技术栈,提高大数据开发便捷性。
发明内容
本发明针对大数据处理的数据信息发展需求,提供一种基于缓存的大数据处理维表存算系统及其方法,可以整合不同Redis服务模式,实现统一、简单的缓存数据读写,包括:缓存存储服务以及服务管理,缓存存储服务使用Redis,并支持单机、集群、哨兵、代理服务模式;服务管理用于连接、写入、读取缓存存储服务,提供数据操作能力;使用Flink SQL操作数据进行缓存写入,包括:流、批式数据获取、数据转换与封装,从批或流的数据源获取业务数据,并使用Flink SQL方式对数据进行处理;将获取到的数据进行格式转换,并封装成字符串格式的索引Key和MAP格式的待存储数据,调用本发明第一方面实现方式提供的数据写入能力进行数据写入;使用Flink SQL操作数据进行缓存关联计算,以完成数据信息补齐,包括:流、批式数据获取、索引Key转换与封装以及数据补全;从批或流的数据源获取待补全业务数据,并使用Flink SQL方式对数据进行处理;将获取到的数据进行转换、封装,得到字符串格式的索引Key,进一步根据索引Key调用本发明第一方面实现方式提供的数据读取能力,并将读取到的信息补全至业务数据,完成业务数据信息补齐。
本发明解决上述技术问题所采用的技术方案包括:
一种基于缓存的大数据处理维表存算系统,所述大数据处理维表存算系统包括数据存储模块、维表配置模块、Redis连接管理模块、数据类型转换模块、主键处理模块、普通字段处理模块、数据写入模块、数据关联模块和Flink集成模块,其中,所述数据存储模块与所述Redis连接管理模块相连接,所述Redis连接管理模块的两端分别连接至所述数据写入模块和数据关联模块,所述数据关联模块与所述Flink集成模块、维表配置模块依次连接,所述维表配置模块将数据分别传送至所述数据写入模块和数据关联模块,所述主键处理模块和普通字段处理模块分别连接至所述数据写入模块、数据关联模块和所述数据类型转换模块。
具体实施时,所述Flink集成模块对接Flink流/批式数据,支持读取与写入,将读取到的数据结合维表配置模块可调用数据写入模块或数据关联模块,所述数据写入模块根据主键处理模块和普通字段处理模块分别调用数据类型转换模块处理得到索引Key和Map数据,进一步调用Redis连接管理模块将数据写入至数据存储模块,所述数据关联模块根据主键处理模块调用数据类型转换模块获取到索引Key,进一步根据索引Key调用Redis连接管理模块读取数据存储模块数据,根据读取到的数据调用普通字段管理模块获取到RowData数据,进一步调用Flink集成模块,完成对Flink流/批式数据进行数据信息补齐。
优选地,所述数据存储模块使用Redis作为存储数据服务;所述维表配置模块用于管理表结构信息、Redis链接信息、数据存储配置和Flink缓存配置;所述Redis连接管理模块用于新建和维护Redis服务连接;所述数据类型转换模块用于将传入的不同类型数据转换成Redis可处理数据类型;所述主键处理模块用于获取传入主键数据并处理成索引Key;所述普通字段处理模块用于将传入表字段与表结构信息进行整合封装;所述数据写入模块用于将处理好的索引Key和普通字段数据存储至Redis;所述数据关联模块用于根据处理好的索引Key的数据从Redis中读取数据;所述Flink集成模块用于接入Flink框架,从而对数据进行接收、处理、补齐。
优选地,所述数据存储模块使用单机、集群、哨兵以及代理模式的Redis服务,以HASH数据结构存储维表数据。
优选地,所述维表配置模块包括Flink连接器名称配置、表结构配置、链接信息配置、索引Key配置和Flink缓存配置。
优选地,所述Flink连接器名称配置的值为固定值,在Flink处理数据的SQL语句中用于标识使用本系统进行数据处理;
所述表结构配置用于定义维表表名、字段名、字段类型、主键;
所述链接信息配置支持单机、集群、哨兵、代理模式Redis,并可以对连接池进行配置;
所述索引Key配置将索引Key分为三部分:前缀、间隔符、主键值;所述Flink缓存配置应用于数据关联模块,设置缓存行数与缓存超时的时长,提供基于本地内存的热点数据缓存。
优选地,所述Redis连接管理模块获取维表配置模块的链接信息配置,整合封装单机、集群、哨兵、代理模式Redis服务,统一服务出口,提供数据写入和读取能力。
优选地,所述数据类型转换模块接收Flink流/批式数据,将不同类型的数据字段转换成String类型;或者所述数据类型转换模块接收Redis数据,根据维表配置模块的表结构配置,将接收到的数据转换成相应类型。
优选地,所述主键处理模块根据所述维表配置模块的表结构配置,获取Flink流/批式数据,读取主键字段并完成数据类型转换,根据索引Key配置,生成索引Key。
优选地,所述普通字段处理模块根据所述维表配置模块的表结构配置,可接收Flink流/批式数据,读取普通字段并完成数据类型转换,生成Redis可接收的结果数据。
优选地,所述数据写入模块获取Flink流/批式数据,并将获取到的数据交由所述主键处理模块和所述普通字段处理模块,进一步获取到索引Key数据和可被Redis服务接收的Map数据,进一步调用Redis连接管理模块的数据写入能力,传入索引Key和Map数据,将数据写入Redis存储,其中索引Key为存储Redis数据的Key。
优选地,所述数据关联模块获取Flink流/批式数据,将获取到的数据交由主键处理模块,进一步获取到索引Key数据,调用Redis连接管理模块的数据读取能力,传入索引Key,获取到Redis数据,进一步将获取到的Redis数据交由普通字段处理模块,处理得到Flink可处理的数据RowData,并将数据推送给Flink。
优选地,所述Flink集成模块将所述维表配置模块、所述数据写入模块和所述数据关联模块接入Flink SQL系统,可使用Flink SQL模式完成维表配置并可读取、补齐Flink流/批式数据。
一种基于缓存的大数据处理维表存算方法,所述大数据处理维表存算方法基于上述大数据处理维表存算系统,所述大数据处理维表存算方法包括以下步骤:
S1,维表数据写入:从批或流式数据源获取数据,将数据清洗转换后存入Redis缓存服务;
S2,维表关联计算:应用于数据信息补全,从批或流式数据源获取业务数据,根据索引Key在Redis缓存中读取相应的扩展数据,以完成业务数据缺失字段的补齐。
本发明的技术效果在于:
本发明一种基于缓存的大数据处理维表存算系统及其方法,可以整合不同Redis服务模式,实现统一、简单的缓存数据读写,从而提升维表关联效率,通过Redis能够明显提升数据处理速度和吞吐量,解决数据处理延迟问题,Redis维表能够消除因关联数据过大而导致的内存溢出问题;并且能够提供Flink SQL方式操作读写Redis数据,封装单机、集群、哨兵、代理模式Redis服务,统一服务接口和大数据开发技术栈,提高大数据开发便捷性。
下面结合附图对本发明作进一步的说明。
附图说明
图1为本发明基于缓存的大数据处理维表存算系统及其方法的Redis服务管理方案结构图;
图2为本发明基于缓存的大数据处理维表存算系统及其方法的维表数据写入流程图;
图3为本发明基于缓存的大数据处理维表存算系统及其方法的业务数据关联补全流程图;
图4为本发明基于缓存的大数据处理维表存算系统及其方法的系统结构组成图。
具体实施方式
以下参照附图,进一步描述本发明的具体技术方案,以便本领域的学者及技术人员进一步理解本发明,而不构成本发明的权利限制。
本发明实施例提供的一种基于缓存的大数据处理维表存算方法主要包括维表数据写入和维表关联计算两步,维表数据写入可从批或流式数据源获取数据,将数据清洗转换后存入Redis缓存服务;维表关联计算应用于数据信息补全,从批或流式数据源获取业务数据,根据索引Key在Redis缓存中读取相应的扩展数据,以完成业务数据缺失字段的补齐。该系统的存和算均使用FlinkSQL方式,简单、通用的SQL式数据开发模式和缓存提供的高速读写能力支撑,很大程度的降低了大数据开发的难度,提高了大数据实时计算效率。
结合图4,图4为本发明基于缓存的大数据处理维表存算系统及其方法的系统结构组成图;本发明实施例提供的一种基于缓存的大数据处理维表存算系统包括数据存储模块、维表配置模块、Redis连接管理模块、数据类型转换模块、主键处理模块、普通字段处理模块、数据写入模块、数据关联模块、Flink集成模块;其中,所述数据存储模块与所述Redis连接管理模块相连接,所述Redis连接管理模块的两端分别连接至所述数据写入模块和数据关联模块,所述数据关联模块与所述Flink集成模块、维表配置模块依次连接,所述维表配置模块将数据分别传送至所述数据写入模块和数据关联模块,所述主键处理模块和普通字段处理模块分别连接至所述数据写入模块、数据关联模块和所述数据类型转换模块;其中,所述Flink集成模块对接Flink流/批式数据,支持读取与写入,将读取到的数据结合维表配置模块可调用数据写入模块或数据关联模块,所述数据写入模块根据主键处理模块和普通字段处理模块分别调用数据类型转换模块处理得到索引Key和Map数据,进一步调用Redis连接管理模块将数据写入至数据存储模块,所述数据关联模块根据主键处理模块调用数据类型转换模块获取到索引Key,进一步根据索引Key调用Redis连接管理模块读取数据存储模块数据,根据读取到的数据调用普通字段管理模块获取到RowData数据,进一步调用Flink集成模块,完成对Flink流/批式数据进行数据信息补齐;所述数据存储模块使用Redis作为存储数据服务;所述维表配置模块用于管理表结构信息、Redis链接信息、数据存储配置、Flink缓存配置;所述Redis连接管理模块用于新建和维护Redis服务连接;所述数据类型转换模块用于将传入的不同类型数据转换成Redis可处理数据类型;所述主键处理模块用于获取传入主键数据并处理成索引Key;所述普通字段处理模块用于将传入表字段与表结构信息进行整合封装;所述数据写入模块用于将处理好的索引Key和普通字段数据存储至Redis;所述数据关联模块用于根据处理好的索引Key数据从Redis中读取数据;所述Flink集成模块用于接入Flink框架,以对数据进行接收、处理、补齐。
其中数据存储模块使用Redis作为数据存储服务,可使用单机、集群、哨兵、代理模式的Redis服务,以HASH数据结构存储维表数据;其中维表配置模块包括Flink连接器名称配置、表结构配置、链接信息配置、索引Key配置、Flink缓存配置;所述维表配置模块提供检测各项配置信息是否符合要求的功能;所述Flink连接器名称配置为固定值,在Flink处理数据的SQL语句中用于标识使用本系统进行数据处理;所述表结构配置用于定义维表表名、字段名、字段类型、主键;所述链接信息配置支持单机、集群、哨兵、代理模式Redis,并可以对连接池进行配置;所述索引Key配置将索引Key分为三部分:前缀、间隔符、主键值,索引Key的生成方式为:"{前缀}{间隔符}{主键值}",若表结构存在多个主键(主键1、主键2、...主键n),索引Key为:"{前缀}{间隔符}{主键1值}{间隔符}{主键2值}...{间隔符}{主键n值}";所述Flink缓存配置应用于数据关联模块,设置缓存行数与缓存超时时长,提供基于本地内存的热点数据缓存;所述Redis连接管理模块获取维表配置模块的链接信息配置,整合封装单机、集群、哨兵、代理模式Redis服务,统一服务出口,提供数据写入和读取能力;所述数据类型转换模块可接收Flink流/批式数据,将不同类型的数据字段转换成String类型;也可接收Redis数据,根据维表配置模块的表结构配置,将接收到的数据转换成相应类型。
另外主键处理模块根据维表配置模块的表结构配置,获取Flink流/批式数据,读取主键字段并完成数据类型转换,根据索引Key配置,生成索引Key;其中普通字段处理模块根据维表配置模块的表结构配置,可接收Flink流/批式数据,读取普通字段并完成数据类型转换,生成Redis可接收的结果数据:Map<字段名,字段值>,其中字段名和字段值均为String类型;也可接收Redis数据,读取普通字段并完成数据类型转换,生成Flink可处理的结果数据:RowData<字段1值,字段2值,...字段n值>,其中各字段值的类型对应于维表配置模块表结构配置中的字段类型;数据写入模块获取Flink流/批式数据,并将获取到的数据交由主键处理模块和普通字段处理模块,进一步获取到索引Key数据和可被Redis服务接收的Map<字段名,字段值>数据,进一步调用Redis连接管理模块的数据写入能力,传入索引Key和Map<字段名,字段值>数据,将数据写入Redis存储,其中索引Key作为存储Redis数据的Key。
其中数据关联模块获取Flink流/批式数据,将获取到的数据交由主键处理模块,进一步获取到索引Key数据,调用Redis连接管理模块的数据读取能力,传入索引Key,获取到Redis数据,进一步将获取到的Redis数据交由普通字段处理模块,处理得到Flink可处理的数据:RowData<字段1值,字段2值,...字段n值>,并将数据推送给Flink;Flink集成模块将维表配置模块、数据写入模块和数据关联模块接入Flink SQL系统,可使用Flink SQL模式完成维表配置并可读取、补齐Flink流/批式数据。
上述实施例中,Flink:开源框架和分布式处理引擎,用于处理批式或流式数据,进行有状态计算。可运行于所有常见集群环境,并能以内存速度和任意规模进行计算;Redis:Remote Dictionary Server(远程字典服务),是一个使用ANSI C编写的开源、支持网络、基于内存、分布式、可选持久性的键值对存储数据库;SQL:Structured Query Language(结构化查询语言),是一种特殊目的的编程语言,用于管理关系数据库管理系统(RDBMS),或在关系流数据管理系统(RDSMS)中进行流处理,包括一个数据定义语言和数据操纵语言,具体为数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。
参考图1-图3,图1为本发明基于缓存的大数据处理维表存算系统及其方法的Redis服务管理方案结构图;通过统一管理单机、集群、哨兵、代理模式的Redis服务,封装数据操作和连接维护接口,实现底层不同存储服务模式的透明化。具体实现方式如下:基础配置层使用抽象类统一管理单机、集群、哨兵、代理四种模式共有的配置参数,包括连接池大小、超时时长、连通性测试策略等内容;下属四个子类,分别管理不同模式Redis服务的专项配置。服务容器层使用接口封装Redis服务的建立连接、关闭连接、数据写入和数据读取四项操作,进一步创建四个容器具体实现类,对应单机、集群、哨兵、代理四种模式Redis服务,扩展该接口,由接口统一提供服务。
图2为本发明基于缓存的大数据处理维表存算系统及其方法的维表数据写入流程图,以下SQL语句为其中一种实现方式:
Figure BDA0003515694980000101
Figure BDA0003515694980000111
Figure BDA0003515694980000121
以上三个SQL语句,语句1是数据源建表语句,语句2是缓存维表建表语句,语句3是数据处理语句。结合图2与上述三个SQL语句,对维表存储流程详述如下:
S1,业务数据一般存储于消息中间件(Kafka、MQ)、数据库(MySQL、Clickhouse、HBase)、文件系统(HDFS)等服务上,Flink的数据输入源可以是流式的消息中间件,也可以是批式的数据库、文件系统。本实施例语句1是基于Kafka的数据源建表语句,Flink使用SQL配置数据源的连接信息和解析规则,根据配置信息,建立数据读取连接,并完成数据解析,将解析后的各字段数据模拟成表,注册表名为"kafka_source",数据以流的形式向后发送。
S2,语句2为缓存维表建表语句,通过指定表名、字段名和配置信息,构建基于Redis的缓存维表。"CREATE TABLE redis_dim"指定表名为redis_dim;'connector'='redis'指定表redis_dim使用Redis作为数据存储介质;'mode'='single'表示使用单机模式的Redis服务;'redis.hosts'='127.0.0.1:6379'配置Redis服务的连接地址和端口;'key-prefix'='k_p'设置索引前缀,索引Key均以"k_p"开头,以区别数据存储;'key-spacer'='_'表示索引前缀、主键之间使用"_"字符间隔;'ttl-sec'='86400'按秒为单位,设置数据过期时间;rk1、rk2、rf1、rf2、rf3为不同类型的数据字段;PRIMARY KEY(rk1,rk2)NOT ENFORCED表示指定rk1、rk2字段为数据主键,配合key-prefix和key-spacer配置可生成索引Key,最终索引Key数据为:k_p_{rk1}_{rk2},其中{rk1}和{rk2}分别表示rk1和rk2的字段数据值;
S3,语句3中,首先从Kafka流表kafka_source中读取数据,根据WHERE语句的过滤规则和SELECT语句的转换规则完成数据的清洗和转换,输出流式行级数据,数据格式:RowData<id1,id2,kf1,kf2,kf3>,分别对应redis_dim表中的rk1、rk2、rf1、rf2、rf3;进一步将数据交由本实施例的数据写入模块,数据写入模块调用主键处理模块,传入行数据RowData<id1,id2,kf1,kf2,kf3>,主键处理模块依据主键规则提取id1和id2数据,进一步调用数据类型转换模块,将INT类型的id1字段转换为STRING类型,再与key-prefix和key-spacer配置组合生成索引Key:k_p_{id1}_{id2};数据写入模块进一步调用普通字段处理模块,传入行数据RowData<id1,id2,kf1,kf2,kf3>,普通字段处理模块调用数据类型转换模块将id1、kf2、kf3均转换为STRING类型,进一步将数据封装成Map类型,得到结果Map<STRING,STRING>["rk1":{id1},"rk2":{id2},"rf1":{kf1},"rf2":{kf2},"rf3":{kf3}]。数据写入模块进一步调用Redis连接管理模块的数据写入能力,传入索引Key和Map结果。Redis连接管理模块在接收到待存储数据时会首先根据索引Key调用数据存储模块删除缓存中旧有数据,之后将索引Key和Map数据以HASH格式存储于Redis,完成数据写入。
参考图3,图3为本发明基于缓存的大数据处理维表存算系统及其方法的业务数据关联补全流程图,以下SQL语句为其中一种实现方式:
Figure BDA0003515694980000141
Figure BDA0003515694980000151
以上三个SQL语句,语句4是数据源建表语句,语句5是缓存维表建表语句,语句6是数据关联补全语句。
结合图3与上述三个SQL语句,对业务数据关联维表计算进行数据补全流程详述如下:
S1,语句4与语句1大体相同,唯一区别在于表定义的数据字段,语句4比语句1多了"pc_time as PROCTIME()",语句4对应的Kafka数据格式与语句1对应的Kafka数据格式一致,都如数据示例1所示。语句4处理数据时会在解析完Kafka数据后加上一个pc_time字段,存储内容为处理数据时的当前时间,称为数据处理时间,以便于后续维表关联使用。
S2,语句5与语句2相比多了两项配置,'lookup.cache.max-rows'='10000'表示维表redis_dim会构造一个能够存储10000条数据的Flink本地内存块,'lookup.cache.ttl-sec'='500'表示配置本地内存块数据存储过期时长为500秒。
S3,语句6,首先从Kafka流表kafka_source中读取数据,进行数据解析并加入数据处理时间,输出流式行级数据,数据格式为:RowData<id1,id2,kf1,kf2,kf3,pc_time>。其中LEFT JOIN语句表示使用时态关联模式传入Kafka数据的id1和id2对维表redis_dim进行关联。"SYSTEM_TIME AS OF k.pc_time"表示时态关联,作用在于比如货币兑换场景,汇率是随时变动的,要计算一天时间内的交易金额,需要根据兑换时间获取当时汇率才能得出准确的结果。"ON k.id1=r.rk1 AND k.id2=r.rk2"语句将id1和id2数据交由本实施例的数据关联模块,数据关联模块调用主键处理模块,传入数据RowData<id1,id2>,主键处理模块依据主键规则提取id1和id2数据,进一步调用数据类型转换模块,将INT类型的id1字段转换为STRING类型,再与key-prefix和key-spacer配置组合生成索引Key:k_p_{id1}_{id2};数据关联模块拿到索引Key后,首先从本地内存块中检索数据,之后的处理步骤为:
a.如果在本地内存块检索到数据,则将检索到的数据处理后返回结果;
b.如果在本地内存块未检索到数据,则进一步到Redis服务中检索数据,若从Redis服务中未检索到数据,则返回NULL数据;若从Redis服务中检索到了数据,则首先将检索到的数据存储到本地内存块,然后进一步做数据处理、返回结果。在存储数据到本地内存块时,如果内存中已经存储了10000条数据,会先删除掉最不常用数据,然后再存储。本地内存块中存储的数据在一直没有被检索命中的情况下会在500秒后被删除。
数据关联模块将检索到的数据整合成RowData<rf1,rf2,rf3>返回给业务数据流,与业务数据流RowData<id1,id2,kf1,kf2>组合生成结果RowData<id1,id2,kf1,kf2,rf1,rf2,rf3>,完成业务数据的信息补全。
本发明实施例提供的一种基于缓存的大数据处理维表存算系统及其方法,可以整合不同Redis服务模式,实现统一、简单的缓存数据读写,包括:缓存存储服务以及服务管理,缓存存储服务使用Redis,并支持单机、集群、哨兵、代理服务模式;服务管理用于连接、写入、读取缓存存储服务,提供数据操作能力;使用Flink SQL操作数据进行缓存写入,包括:流、批式数据获取、数据转换与封装,从批或流的数据源获取业务数据,并使用FlinkSQL方式对数据进行处理;将获取到的数据进行格式转换,并封装成字符串格式的索引Key和MAP格式的待存储数据,调用本发明第一方面实现方式提供的数据写入能力进行数据写入;使用Flink SQL操作数据进行缓存关联计算,以完成数据信息补齐,包括:流、批式数据获取、索引Key转换与封装以及数据补全;从批或流的数据源获取待补全业务数据,并使用Flink SQL方式对数据进行处理;将获取到的数据进行转换、封装,得到字符串格式的索引Key,进一步根据索引Key调用本发明第一方面实现方式提供的数据读取能力,并将读取到的信息补全至业务数据,完成业务数据信息补齐。
本发明实施例提供的一种基于缓存的大数据处理维表存算系统及其方法,可以整合不同Redis服务模式,实现统一、简单的缓存数据读写,从而提升维表关联效率,通过Redis能够明显提升数据处理速度和吞吐量,解决数据处理延迟问题,Redis维表能够消除因关联数据过大而导致的内存溢出问题;并且能够提供Flink SQL方式操作读写Redis数据,封装单机、集群、哨兵、代理模式Redis服务,统一服务接口和大数据开发技术栈,提高大数据开发便捷性。
本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定,对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动,这里无法对所有的实施方式予以穷举,凡是属于本发明的技术方案所引伸出的显而易见的变化或变动仍处于本发明的保护范围之列。

Claims (10)

1.一种基于缓存的大数据处理维表存算系统,其特征在于,所述大数据处理维表存算系统包括数据存储模块、维表配置模块、Redis连接管理模块、数据类型转换模块、主键处理模块、普通字段处理模块、数据写入模块、数据关联模块和Flink集成模块,其中,所述数据存储模块与所述Redis连接管理模块相连接,所述Redis连接管理模块的两端分别连接至所述数据写入模块和数据关联模块,所述数据关联模块与所述Flink集成模块、维表配置模块依次连接,所述维表配置模块将数据分别传送至所述数据写入模块和数据关联模块,所述主键处理模块和普通字段处理模块分别连接至所述数据写入模块、数据关联模块和所述数据类型转换模块。
2.根据权利要求1所述的基于缓存的大数据处理维表存算系统,其特征在于,所述数据存储模块使用Redis作为存储数据服务;所述维表配置模块用于管理表结构信息、Redis链接信息、数据存储配置和Flink缓存配置;所述Redis连接管理模块用于新建和维护Redis服务连接;所述数据类型转换模块用于将传入的不同类型数据转换成Redis可处理数据类型;所述主键处理模块用于获取传入主键数据并处理成索引Key;所述普通字段处理模块用于将传入表字段与表结构信息进行整合封装;所述数据写入模块用于将处理好的索引Key和普通字段数据存储至Redis;所述数据关联模块用于根据处理好的索引Key的数据从Redis中读取数据;所述Flink集成模块用于接入Flink框架,从而对数据进行接收、处理、补齐。
3.根据权利要求2所述的基于缓存的大数据处理维表存算系统,其特征在于,所述数据存储模块使用单机、集群、哨兵以及代理模式的Redis服务,以HASH数据结构存储维表数据。
4.根据权利要求1所述的基于缓存的大数据处理维表存算系统,其特征在于,所述维表配置模块包括Flink连接器名称配置、表结构配置、链接信息配置、索引Key配置和Flink缓存配置。
5.根据权利要求4所述的基于缓存的大数据处理维表存算系统,其特征在于,所述Flink连接器名称配置的值为固定值,在Flink处理数据的SQL语句中用于标识使用本系统进行数据处理;
所述表结构配置用于定义维表表名、字段名、字段类型、主键;
所述链接信息配置支持单机、集群、哨兵、代理模式Redis,并可以对连接池进行配置;
所述索引Key配置将索引Key分为三部分:前缀、间隔符、主键值;所述Flink缓存配置应用于数据关联模块,设置缓存行数与缓存超时的时长,提供基于本地内存的热点数据缓存。
6.根据权利要求2所述的基于缓存的大数据处理维表存算系统,其特征在于:
所述Redis连接管理模块获取维表配置模块的链接信息配置,整合封装单机、集群、哨兵、代理模式Redis服务,统一服务出口,提供数据写入和读取能力;或
所述数据类型转换模块接收Flink流/批式数据,将不同类型的数据字段转换成String类型;或者所述数据类型转换模块接收Redis数据,根据维表配置模块的表结构配置,将接收到的数据转换成相应类型;或
所述主键处理模块根据所述维表配置模块的表结构配置,获取Flink流/批式数据,读取主键字段并完成数据类型转换,根据索引Key配置,生成索引Key;或
所述普通字段处理模块根据所述维表配置模块的表结构配置,可接收Flink流/批式数据,读取普通字段并完成数据类型转换,生成Redis可接收的结果数据。
7.根据权利要求2所述的基于缓存的大数据处理维表存算系统,其特征在于,所述数据写入模块获取Flink流/批式数据,并将获取到的数据交由所述主键处理模块和所述普通字段处理模块,进一步获取到索引Key数据和可被Redis服务接收的Map数据,进一步调用Redis连接管理模块的数据写入能力,传入索引Key和Map数据,将数据写入Redis存储,其中索引Key为存储Redis数据的Key。
8.根据权利要求2所述的基于缓存的大数据处理维表存算系统,其特征在于,所述数据关联模块获取Flink流/批式数据,将获取到的数据交由主键处理模块,进一步获取到索引Key数据,调用Redis连接管理模块的数据读取能力,传入索引Key,获取到Redis数据,进一步将获取到的Redis数据交由普通字段处理模块,处理得到Flink可处理的数据RowData,并将数据推送给Flink。
9.根据权利要求2所述的基于缓存的大数据处理维表存算系统,其特征在于,所述Flink集成模块将所述维表配置模块、所述数据写入模块和所述数据关联模块接入FlinkSQL系统,可使用Flink SQL模式完成维表配置并可读取、补齐Flink流/批式数据。
10.一种基于缓存的大数据处理维表存算方法,所述大数据处理维表存算方法基于上述任意一项权利要求所述的大数据处理维表存算系统,其特征在于,所述大数据处理维表存算方法包括以下步骤:
S1,维表数据写入:从批或流式数据源获取数据,将数据清洗转换后存入Redis缓存服务;
S2,维表关联计算:应用于数据信息补全,从批或流式数据源获取业务数据,根据索引Key在Redis缓存中读取相应的扩展数据,以完成业务数据缺失字段的补齐。
CN202210165044.4A 2022-02-22 2022-02-22 一种基于缓存的大数据处理维表存算系统及其方法 Active CN114546274B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210165044.4A CN114546274B (zh) 2022-02-22 2022-02-22 一种基于缓存的大数据处理维表存算系统及其方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210165044.4A CN114546274B (zh) 2022-02-22 2022-02-22 一种基于缓存的大数据处理维表存算系统及其方法

Publications (2)

Publication Number Publication Date
CN114546274A true CN114546274A (zh) 2022-05-27
CN114546274B CN114546274B (zh) 2023-10-27

Family

ID=81677279

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210165044.4A Active CN114546274B (zh) 2022-02-22 2022-02-22 一种基于缓存的大数据处理维表存算系统及其方法

Country Status (1)

Country Link
CN (1) CN114546274B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109254982A (zh) * 2018-08-31 2019-01-22 杭州安恒信息技术股份有限公司 一种流数据处理方法、系统、装置及计算机可读存储介质
CN110209668A (zh) * 2019-04-29 2019-09-06 苏宁云计算有限公司 基于流计算的维表关联方法、装置、设备及可读存储介质
CN111966690A (zh) * 2020-08-21 2020-11-20 西安寰宇卫星测控与数据应用有限公司 加载表格全量数据的方法、装置、计算机设备、存储介质
CN112162903A (zh) * 2020-09-24 2021-01-01 常州微亿智造科技有限公司 基于Flink对业务系统的状态监控方法、系统
CN112506743A (zh) * 2020-12-09 2021-03-16 天津狮拓信息技术有限公司 一种日志监控方法、装置和服务器
CN112765166A (zh) * 2021-01-06 2021-05-07 深圳市欢太科技有限公司 数据处理方法、装置及计算机可读存储介质
CN113157692A (zh) * 2021-02-07 2021-07-23 上海万得宏汇信息技术有限公司 一种关系型内存数据库系统
CN113590094A (zh) * 2021-07-29 2021-11-02 国泰君安证券股份有限公司 基于Flink的一站式任务开发、部署、运维平台系统、方法、装置、存储器及存储介质
WO2021223451A1 (zh) * 2020-05-06 2021-11-11 广州明珞装备股份有限公司 汽车生产动作数据采集方法、系统、装置和存储介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109254982A (zh) * 2018-08-31 2019-01-22 杭州安恒信息技术股份有限公司 一种流数据处理方法、系统、装置及计算机可读存储介质
CN110209668A (zh) * 2019-04-29 2019-09-06 苏宁云计算有限公司 基于流计算的维表关联方法、装置、设备及可读存储介质
WO2021223451A1 (zh) * 2020-05-06 2021-11-11 广州明珞装备股份有限公司 汽车生产动作数据采集方法、系统、装置和存储介质
CN111966690A (zh) * 2020-08-21 2020-11-20 西安寰宇卫星测控与数据应用有限公司 加载表格全量数据的方法、装置、计算机设备、存储介质
CN112162903A (zh) * 2020-09-24 2021-01-01 常州微亿智造科技有限公司 基于Flink对业务系统的状态监控方法、系统
CN112506743A (zh) * 2020-12-09 2021-03-16 天津狮拓信息技术有限公司 一种日志监控方法、装置和服务器
CN112765166A (zh) * 2021-01-06 2021-05-07 深圳市欢太科技有限公司 数据处理方法、装置及计算机可读存储介质
CN113157692A (zh) * 2021-02-07 2021-07-23 上海万得宏汇信息技术有限公司 一种关系型内存数据库系统
CN113590094A (zh) * 2021-07-29 2021-11-02 国泰君安证券股份有限公司 基于Flink的一站式任务开发、部署、运维平台系统、方法、装置、存储器及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王景佩: "基于Redis的结构化数据缓存系统的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Also Published As

Publication number Publication date
CN114546274B (zh) 2023-10-27

Similar Documents

Publication Publication Date Title
CN106897322B (zh) 一种数据库和文件系统的访问方法和装置
CN110032604B (zh) 数据存储装置、转译装置及数据库访问方法
CN101661494B (zh) 一种分布式中间件与数据库数据交互方法
CN108536705A (zh) 数据库系统中对象的编码及运算方法与数据库服务器
CN109491989B (zh) 数据处理方法及装置、电子设备、存储介质
CN114356971A (zh) 数据处理方法、装置以及系统
WO2023131218A1 (zh) 图数据的存储
CN110990425B (zh) 硬件数据库的jdbc驱动方法及装置
CN112306645B (zh) 以太坊虚拟机的事务处理方法、装置、设备和介质
CN111221791A (zh) 一种多源异构数据导入数据湖的方法
CN106776783A (zh) 非结构化数据存储管理方法、服务器和系统
CN106980672A (zh) 一种异构环境下面向对象的数据存储系统及方法
WO2021189195A1 (zh) 数据查询方法、装置、服务器及存储介质
CN112416908A (zh) 基于Handle标识解析前缀分库存储数据的方法及系统
CN101848148A (zh) 应用于金融报文语言的数据传输处理系统、装置及方法
CN113190534A (zh) 数据库数据迁移方法及装置
US9129035B2 (en) Systems, methods, and apparatus for accessing object representations of data sets
CN115033646A (zh) 一种基于Flink&amp;Doris构建实时数仓系统的方法
CN112379886A (zh) 数据格式转换系统及其方法
CN116628066A (zh) 数据传输方法、装置、计算机设备和存储介质
CN114546274A (zh) 一种基于缓存的大数据处理维表存算系统及其方法
CN111125216A (zh) 数据导入Phoenix的方法及装置
CN116150410A (zh) 一种基于数据湖的数字对象存储方法
CN109828953A (zh) 基于分布式内存数据库的图片检索系统及其方法
WO2022077916A1 (zh) 一种数据处理系统、基于区块链的数据处理方法及设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant