CN116680315A - 数据离线处理方法、装置、电子设备及存储介质 - Google Patents
数据离线处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116680315A CN116680315A CN202310686537.7A CN202310686537A CN116680315A CN 116680315 A CN116680315 A CN 116680315A CN 202310686537 A CN202310686537 A CN 202310686537A CN 116680315 A CN116680315 A CN 116680315A
- Authority
- CN
- China
- Prior art keywords
- data
- offline
- task
- processing
- 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.)
- Pending
Links
- 238000003860 storage Methods 0.000 title claims abstract description 52
- 238000003672 processing method Methods 0.000 title claims abstract description 27
- 230000006399 behavior Effects 0.000 claims abstract description 65
- 238000000034 method Methods 0.000 claims abstract description 39
- 238000007405 data analysis Methods 0.000 claims abstract description 36
- 238000007781 pre-processing Methods 0.000 claims abstract description 26
- 238000012545 processing Methods 0.000 claims description 82
- 238000004458 analytical method Methods 0.000 claims description 58
- 238000013500 data storage Methods 0.000 claims description 16
- 230000004048 modification Effects 0.000 claims description 9
- 238000012986 modification Methods 0.000 claims description 9
- 241001481833 Coryphaena hippurus Species 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 238000004806 packaging method and process Methods 0.000 claims description 2
- 230000000007 visual effect Effects 0.000 abstract description 18
- 238000010586 diagram Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 15
- 230000006870 function Effects 0.000 description 11
- 230000000694 effects Effects 0.000 description 10
- 238000004590 computer program Methods 0.000 description 7
- 230000002354 daily effect Effects 0.000 description 6
- 230000006978 adaptation Effects 0.000 description 5
- 101100508538 Homo sapiens IKBKE gene Proteins 0.000 description 4
- 102100021857 Inhibitor of nuclear factor kappa-B kinase subunit epsilon Human genes 0.000 description 4
- 238000013523 data management Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000004140 cleaning Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 241001178520 Stomatepia mongo Species 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 235000014510 cooky Nutrition 0.000 description 2
- 230000003203 everyday effect Effects 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000010223 real-time analysis Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000007619 statistical method Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000021615 conjugation Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- ZLIBICFPKPWGIZ-UHFFFAOYSA-N pyrimethanil Chemical compound CC1=CC(C)=NC(NC=2C=CC=CC=2)=N1 ZLIBICFPKPWGIZ-UHFFFAOYSA-N 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/482—Application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请的实施方式提供了一种数据离线处理方法、装置、电子设备及存储介质。该方法包括:获取用户行为数据;对用户行为数据进行数据预处理,得到预处理数据并将预处理数据暂存至第一消息队列中;对预处理数据进行数据治理处理,得到离线治理数据并将离线治理数据暂存至第二消息队列中;读取离线治理数据并将离线治理数据储存至目标存储器中;构建离线任务工作流并通过离线任务工作流获取数据分析结果。本申请提供的方案,能够在超高并发的场景下高效写入、低成本存储以及稳定查询,确保数据可视化展示质量,提升用户的使用体验感。
Description
技术领域
本申请的实施方式一般地涉及数据处理领域,更具体地,本申请的实施方式涉及数据离线处理方法、装置、电子设备及存储介质。
背景技术
本部分旨在为权利要求书中陈述的本申请的实施方式提供背景或上下文。此处的描述可包括可以探究的概念,但不一定是之前已经想到或者已经探究的概念。因此,除非在此指出,否则在本部分中描述的内容对于本申请的说明书和权利要求书而言不是现有技术,并且并不因为包括在本部分中就承认是现有技术。
随着大数据时代的到来,越来越多的网站和应用程序开始使用埋点***来收集用户的行为数据,并通过数据分析***进行可视化的图表展示。然而,在海量数据上报时,实时数据处理方式可能会遇到一些瓶颈,例如,上报日志的软件开发工具包SDK去请求网关服务时的每秒查询率QPS可能会达到两万多,每秒事务处理量TPS达到八万多。这种超高并发的场景可能会对下游的数据仓库技术ETL模块和存储服务带来压力,使得在ETL模块里执行的Flink任务需要以每秒五万条数据的速度在上亿条数据中进行数据去重和数据处理,并且需要将处理后的数据快速写入底层数据库,以适配数据的生产速度。
但是,对于每天产生多于30亿条数据,7天产生多于230亿条数据的数据量规模来说,对常见的关系型数据库(如Mysql、Oracle)、NoSQL数据库(MongoDB)和分析性数据库(TiDB、Doris)都不太适用,可能导致内存超过***限制,引发数据库异常崩溃的情况。此外,上百亿数据的查询范围对于Doris的查询性能是一个考验,可能会导致用户查询频繁超时或者失败,影响用户的使用体验。
有鉴于此,亟需提出一种能够在超高并发的场景下高效写入、低成本存储以及稳定查询的数据离线处理方法,确保数据可视化展示质量,提升用户的使用体验感。
发明内容
为克服相关技术中存在的问题,本申请的实施方式期望提供一种数据离线处理方法、装置、电子设备及存储介质。该数据离线处理方法能够在超高并发的场景下高效写入、低成本存储以及稳定查询,确保数据可视化展示质量,提升用户的使用体验感。
在本申请实施方式的第一方面中,提供了一种数据离线处理方法,包括:获取用户行为数据;对用户行为数据进行数据预处理,得到预处理数据并将预处理数据暂存至第一消息队列中;对预处理数据进行数据治理处理,得到离线治理数据并将离线治理数据暂存至第二消息队列中;读取离线治理数据并将离线治理数据储存至目标存储器中;构建离线任务工作流并通过离线任务工作流获取数据分析结果。
在本申请的一个实施例中,对预处理数据进行数据治理处理包括:创建Flink任务;通过Flink任务对预处理数据进行数据修饰处理;以及基于Flink任务对预处理数据进行数据去重处理。
在本申请的一个实施例中,创建Flink任务包括:生成Flink任务代码;
将Flink任务代码打包为JAR包;通过Flink CLI将JAR包传输至Flink集群;通过调用容器编排引擎Kubernetes的API接口使用Flink镜像建立Docker容器以创建Flink任务。
在本申请的一个实施例中,通过Flink任务对预处理数据进行数据修饰处理包括:通过Flink任务对预处理数据进行预置参数添加、业务逻辑处理、兼容性操作以及字段解析处理。
在本申请的一个实施例中,基于Flink任务对预处理数据进行数据去重处理包括:在Flink任务中配置算子状态Operator State,Operator State用于存储目标去重数据;通过Flink任务在Operator State中查询预处理数据中是否存在目标去重数据;若不存在,则将RocksDB配置于Flink任务中作为Flink任务的状态后端State Backend;通过Flink任务将预处理数据加载至RocksDB中进行去重处理。
在本申请的一个实施例中,读取离线治理数据并将离线治理数据储存至目标存储器中包括:通过FlinkSQL任务在第二消息队列中读取离线治理数据;通过HiveSQL语句将离线治理数据写入Hadoop分布式文件***中。
在本申请的一个实施例中,构建离线任务工作流并通过离线任务工作流获取数据分析结果包括:通过调用工作流任务调度***DolphinScheduler的API接口构建离线任务工作流;将目标分析数据类型对应的查询SQL语句进行语法转换,得到目标SQL语句,目标SQL语句为能够在Hive数据库中进行查询的SQL语句;基于目标SQL语句构建SQL查询任务;通过SQL查询任务以及Trino客户端对Hive数据库进行查询,得到数据分析结果。
在本申请的一个实施例中,在通过SQL查询任务以及Trino客户端对Hive数据库进行查询,得到数据分析结果之后,还包括:将数据分析结果储存至Doris数据库中;通过Spring Boot服务根据目标分析模型生成分析查询SQL语句;基于分析查询SQL语句在Doris数据库中进行数据查询,得到目标分析结果;将目标分析结果转换为展示组件适配数据,展示组件适配数据为与前端Amis组件相适配的数据,以使得前端Amis组件能够对查询分析结果进行可视化展示。
在本申请的一个实施例中,对用户行为数据进行数据预处理包括:通过网关服务平台对用户行为数据进行鉴权认证,得到合法数据;通过网关服务平台对合法数据进行写入前处理,得到预处理数据。
在本申请的一个实施例中,通过网关服务平台对用户行为数据进行鉴权认证包括:获取用户行为数据中的签名密文;通过网关服务平台根据时间戳以及预设密钥创建对照密文;将签名密文与对照密文进行比对;若签名密文与对照密文匹配,则确定用户行为数据合法。
在本申请的一个实施例中,通过网关服务平台对合法数据进行写入前处理包括:判断合法数据对应的业务埋点是否是服务端埋点;若是,则获取用户IP字段;若否,则解析业务埋点的http请求,并以第一预设远程地址、第二预设远程地址和第三预设远程地址为顺序依次获取用户IP字段;判断合法数据对应的业务终端是否为预设终端,若是,则根据业务终端的cookie确定业务终端的用户身份信息;以及剔除合法数据中的敏感信息并修正合法数据中的时钟逻辑。
在本申请的一个实施例中,获取用户行为数据包括:通过软件开发工具包SDK采集实时分析数据;和/或导入历史存量数据。
在本申请实施方式的第二方面中,提供了一种数据离线处理装置,用于执行如第一方面中任一项所述的数据离线处理方法,包括:
数据获取模块,用于获取用户行为数据;
预处理模块,用于对用户行为数据进行数据预处理,得到预处理数据并将预处理数据暂存至第一消息队列中;
治理处理模块,用于对预处理数据进行数据治理处理,得到离线治理数据并将离线治理数据暂存至第二消息队列中;
数据储存模块,用于读取离线治理数据并将离线治理数据储存至目标存储器中;
离线处理模块,用于构建离线任务工作流并通过离线任务工作流获取数据分析结果。
本申请第三方面提供一种电子设备,包括:
处理器;以及
存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如上所述的方法。
本申请第四方面提供一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如上所述的方法。
本申请实施方式提供的技术方案具有以下有益效果:
本申请实施方式提供的数据离线处理方法、装置、电子设备及存储介质,通过获取用户行为数据,对用户行为数据进行数据预处理,得到预处理数据并将预处理数据暂存至第一消息队列中,进而对预处理数据进行数据治理处理,得到离线治理数据并将离线治理数据暂存至第二消息队列中。从而能够通过第一消息队列和第二消息队列对数据的暂存作用,把用户行为数据的数据生产方和数据消费方之间的差速拉平,降低了数据处理压力和数据存储压力。
进一步地,本申请能够读取离线治理数据并将离线治理数据储存至目标存储器中,实现低成本存储的目标。进而构建离线任务工作流并通过离线任务工作流获取数据分析结果,实现对数据分析结果的高效稳定查询。
总体来说,本申请提供的方案能够在超高并发的场景下高效写入、低成本存储以及稳定查询,确保数据可视化展示质量,提升用户的使用体验感。
附图说明
通过参考附图阅读下文的详细描述,本申请示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本申请的若干实施方式,其中:
图1示意性地示出了适于实现本申请实施方式的示例性计算***100的框图;
图2示意性地示出了根据本申请另一实施例的数据离线处理方法的流程示意图;
图3示意性地示出了根据本申请又一实施例的数据离线处理方法的流程示意图;
图4示意性地示出了根据本申请再一实施例的数据离线处理方法的流程示意图;
图5示意性地示出了根据本申请另一实施例的数据离线处理装置的结构示意图;
图6示意性地示出了根据本申请实施例的电子设备的示意框图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本申请的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本申请,而并非以任何方式限制本申请的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
图1示出了适于实现本申请实施方式的示例性计算***100的框图。如图1所示,计算***100可以包括:中央处理单元(CPU)101、随机存取存储器(RAM)102、只读存储器(ROM)103、***总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和显示器114。这些设备中,与***总线104耦合的有CPU 101、RAM 102、ROM 103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及显示器114与显示控制器109耦合。应当理解,图1所述的结构框图仅仅是为了示例的目的,而不是对本申请范围的限制。在某些情况下,可以根据具体情况增加或减少某些设备。
本领域技术人员知道,本申请的实施方式可以实现为一种***、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式,本文一般称为“电路”、“模块”或“***”。此外,在一些实施例中,本申请还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举示例)例如可以包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络(包括局域网(LAN)或广域网(WAN))连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本申请实施例的方法的流程图和设备(或***)的框图描述本申请的实施方式。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置的产品。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
根据本申请的实施方式,提出了一种数据离线处理方法和设备。
在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本申请的若干代表性实施方式,详细阐释本申请的原理和精神。
发明概述
本申请人发现,在海量数据上报时,实时数据处理方式可能会遇到一些瓶颈,例如,上报日志的软件开发工具包SDK去请求网关服务时的每秒查询率QPS可能会达到两万多,每秒事务处理量TPS达到八万多。这种超高并发的场景可能会对下游的数据仓库技术ETL模块和存储服务带来压力,使得在ETL模块里执行的Flink任务需要以每秒五万条数据的速度在上亿条数据中进行数据去重和数据处理,并且需要将处理后的数据快速写入底层数据库,以适配数据的生产速度。但是,对于每天产生多于30亿条数据,7天产生多于230亿条数据的数据量规模来说,对常见的关系型数据库(如Mysql、Oracle)、NoSQL数据库(MongoDB)和分析性数据库(TiDB、Doris)都不太适用,可能导致内存超过***限制,引发数据库异常崩溃的情况。此外,上百亿数据的查询范围对于Doris的查询性能是一个考验,可能会导致用户查询频繁超时或者失败,影响用户的使用体验。
基于此,本申请技术方案通过获取用户行为数据,对用户行为数据进行数据预处理,得到预处理数据并将预处理数据暂存至第一消息队列中,进而对预处理数据进行数据治理处理,得到离线治理数据并将离线治理数据暂存至第二消息队列中。从而能够通过第一消息队列和第二消息队列对数据的暂存作用,把用户行为数据的数据生产方和数据消费方之间的差速拉平,降低了数据处理压力和数据存储压力。
进一步地,本申请能够读取离线治理数据并将离线治理数据储存至目标存储器中,实现低成本存储的目标。进而构建离线任务工作流并通过离线任务工作流获取数据分析结果,实现对数据分析结果的高效稳定查询。
总体来说,本申请提供的方案能够在超高并发的场景下高效写入、低成本存储以及稳定查询,确保数据可视化展示质量,提升用户的使用体验感。
在介绍了本申请的基本原理之后,下面具体介绍本申请的各种非限制性实施方式。
应用场景总览
本申请实施方式的数据离线处理方法适用于对海量大数据进行采集分析的终端或设备,该终端或设备例如是智能移动设备、计算机或服务器等。而该数据离线处理方法所采集和分析的数据可以是用户的网页浏览数据、APP用户操作数据和电商平台用户购买数据等用户行为数据。
示例性方法
下面参考图2来描述根据本申请示例性实施方式的数据离线处理方法。需要注意的是,上述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施方式在此方面不受任何限制。相反,本申请的实施方式可以应用于适用的任何场景。
图2示意性地示出了根据本申请另一实施例的数据离线处理方法的流程示意图。请参阅图2,本申请实施例示出的数据离线处理方法可以包括:
在步骤S201中,获取用户行为数据。前述的用户行为数据可以是用户的网页浏览数据、APP用户操作数据和电商平台用户购买数据等行为数据,具体可以通过埋点***进行采集获取。用户行为数据通常是海量的,海量的用户行为数据可以视为是一个相对而言的概念,是指用户行为数据的数据量很大,超出了单个计算机或服务存储和处理能力。在一些应用场景中,例如在大型企业或者数据服务商中,当处理的数据量超过100TB时,则可以将处理的数据视为海量数据。而在另一些应用场景中,例如在大型科研结构或互联网巨头企业中,当处理的数据量超过1PB时,则可以将处理的数据视为海量数据。特别需要说明的是,上述应用场景中的数据处理过程是指数据存储和简单数据查询的过程。
在步骤S202中,对用户行为数据进行数据预处理,得到预处理数据并将预处理数据暂存至第一消息队列中。在本申请实施例中,可以对用户行为数据进行包含鉴权认证和写入前处理在内的数据预处理,然后将处理完毕的数据写入第一消息队列中进行暂存。
上述的第一消息队列可以是Kafka队列,从而能够利用Kafka的高吞吐能力来降低流量洪峰。Kafka是一个开源流处理平台,由Scala和Java编写,是一种高吞吐量的分布式发布订阅消息***,可以处理用户在网站中的所有动作流数据。Kafka对于像Hadoop一样的日志数据和离线分析***,并且在要求实时处理的限制条件下是一个可行的解决方案。
在步骤S203中,对预处理数据进行数据治理处理,得到离线治理数据并将离线治理数据暂存至第二消息队列中。在本申请实施例中,前述的对预处理数据进行数据治理处理可以视为对预处理数据进行ETL清洗处理,从而达到数据治理的效果。ETL(Extract-Transform-Load)是指将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。在本申请实施例中,在ETL过程中可以对预处理数据进行数据修饰处理和数据去重处理等操作,以达到对预处理数据进行清洗的效果。
将清洗完毕所得的离线治理数据暂存至第二消息队列中,第二消息队列可以是区别于第一消息队列的另一个Kafka队列,从而能够通过两层Kafka队列的高吞吐特性进行流量削峰,把用户行为数据的数据生产者和数据消费者(数据消费者包含数据处理层和数据存储层)之间的差速给拉平,有效地降低了在数据超高并发场景下带来的数据处理压力和数据存储压力。
在步骤S204中,读取离线治理数据并将离线治理数据储存至目标存储器中。在第二消息队列中读取该离线治理数据,并将读取后的离线治理数据储存至目标存储器中。考虑到离线治理数据的每日数据生产量可能超过10TB,每年数据生产量可能是PB级别,因此,本申请实施例中示出的目标存储器可以采用Hadoop集群。Hadoop是一个能够对大量数据进行分布式处理的软件框架,能够以一种可靠、高效、可伸缩的方式进行数据处理。从而能够降低磁盘使用量,以实现低成本存储的目标。
在步骤S205中,构建离线任务工作流并通过离线任务工作流获取数据分析结果。在本申请实施例中,可以在数据分析过程中新建数据看板或数据指标之时,根据当前业务终端是否具有支持海量数据上报的标识来确定是否建立离线任务工作流。若确定建立离线任务工作流,则可以根据数据看板或数据指标的类型来构建相应的离线任务工作流。假设用户在数据分析过程中于数据分析处理后台创建了一个用户日活(日活跃用户数)看板或指标,数据分析处理后台就会自动生成一个与用户日活看板或指标对应的离线任务工作流。可以理解的是,假若在对用户日活看板或指标进行更新,那么当前的离线任务工作流会下线,当前的离线任务工作流所生成的数据会被删除,然后会基于更新后的用户日活看板或指标生成一个新的离线任务工作流。
进一步地,可以通过任务调度平台管理并调度离线任务工作流,使得离线任务工作流能够对目标存储器进行数据查询,进而进行数据统计分析并获得数据分析结果。
通过获取用户行为数据,对用户行为数据进行数据预处理,得到预处理数据并将预处理数据暂存至第一消息队列中,进而对预处理数据进行数据治理处理,得到离线治理数据并将离线治理数据暂存至第二消息队列中。从而能够通过第一消息队列和第二消息队列对数据的暂存作用,把用户行为数据的数据生产方和数据消费方之间的差速拉平,降低了数据处理压力和数据存储压力。进一步地,本申请能够读取离线治理数据并将离线治理数据储存至目标存储器中,实现低成本存储的目标。进而构建离线任务工作流并通过离线任务工作流获取数据分析结果,实现对数据分析结果的高效稳定查询。总体来说,本申请提供的方案能够在超高并发的场景下高效写入、低成本存储以及稳定查询,确保数据可视化展示质量,提升用户的使用体验感。
在一些实施例中,可以通过网关服务平台进行数据预处理,也可以通过创建Flink任务进行数据治理处理。下文将结合图3来对数据预处理和数据治理处理的具体过程进行详细说明。图3示意性地示出了根据本申请又一实施例的数据离线处理方法的流程示意图,请参阅图3,本申请实施例示出的数据离线处理方法可以包括:
在步骤S301中,获取用户行为数据。在本申请实施例中,可以各业务终端可以通过软件开发工具包SDK采集实时分析数据,和/或直接导入历史存量数据。用户行为数据采集完毕后通过单条上报和/或批量上报两种方式进行数据上报。
其中,上述的单条上报是指业务终端在采集到用户的每条用户行为数据之后都会利用SDK进行数据上报,这种上报方式适合小流量且实时性要求高的业务终端使用,可以保证实时性的同时,不会产生大量上报请求,避免上报阻塞的情况发生。
另外,上述的批量上报是指业务终端在采集到用户行为数据后,先将用户行为数据暂存至本地存储中,待达到某个存储数量阈值或达到其他触发上报的条件后,批量地将本地存储中的用户行为数据进行上报。上报成功后将本地存储中的用户行为数据进行删除,从而降低上报频率,这样可以减少业务终端的网络带宽和CPU压力,降低给用户的带来的负面影响。
在步骤S302中,通过网关服务平台对用户行为数据进行鉴权认证,得到合法数据。用户行为数据在获取后会上报至网关服务平台,并在网关服务平台中进行合法化鉴权。具体地,可以首先获取用户行为数据中的签名密文,该签名密文会以字符串的形式出现。然后可以通过网关服务平台根据时间戳以及预设密钥创建对照密文。接着可以将签名密文与对照密文进行比对,若签名密文与对照密文匹配,则确定用户行为数据合法。
在步骤S303中,通过网关服务平台对合法数据进行写入前处理,得到预处理数据。具体地,首先可以判断合法数据对应的业务埋点是否是服务端埋点,若是,则获取用户上传的IP字段;若否,则解析业务埋点的http请求,并以第一预设远程地址、第二预设远程地址和第三预设远程地址为顺序依次获取用户IP字段。其中,第一预设远程地址、第二预设远程地址和第三预设远程地址分别可以为“x-forwarded-for”、“Proxy-Client-IP”以及“WL-Proxy-Client-IP”。然后可以进一步判断合法数据对应的业务终端是否为预设终端,若是,则根据业务终端的cookie确定业务终端的用户身份信息userid。接着,可以剔除合法数据中的敏感信息,例如手机号码等,并且修正合法数据中的时钟逻辑。其中,时钟逻辑的修正逻辑如下:
当用户行为发生时间T1大于数据采集方服务端的当前时间T3十二小时,纠正用户行为发生时间T1为服务端当前时间T3。当用户行为发生时间T1小于服务端当前时间T3在2个月内时,对比服务端时间T3与用户行为上报时间T2的差别,若差别大于12小时,则纠正用户行为发生时间T1为T1+(T3-T2);否则不纠正。当用户行为发生时间T1小于服务端当前时间T3一年,则将用户行为发生时间T1修正为服务端当前时间T3。
在本申请实施例示出的步骤S302和步骤S303中,网关服务平台可以是高性能网关服务IKKI,IKKI有单条上报接口和批量上报接口,可以根据业务场景灵活选择,在实际应用中,可以根据实际应用情况选择合适的网关服务平台,本申请在此方面不作任何限制。高性能网关服务IKKI在对用户行为数据进行鉴权认证和写入前处理之后,会将所得的预处理数据快速流入至第一消息队列中进行暂存,进而能够利用Kafka的高吞吐能力来降低流量洪峰。
在步骤S304中,创建Flink任务。在本申请实施例中,主要是通过创建Flink任务在进行数据治理处理。Flink任务的自动创建主要是集成了Flink的REST API来实现,具体地,可以首先生成Flink任务代码,生成的方式示例性地可以是人工编写或者调用预先存储的代码。然后可以将Flink任务代码打包为JAR包。接着可以通过Flink CLI将JAR包传输至Flink集群,从而Flink CLI会将任务提交到Flink集群。最后可以通过调用容器编排引擎Kubernetes的API接口使用Flink镜像建立Docker容器以创建Flink任务,并将Flink任务运行起来。
在步骤S305中,通过Flink任务对预处理数据进行数据修饰处理。
通过Flink任务对预处理数据进行预置参数添加、业务逻辑处理、兼容性操作以及字段解析处理。前述的预置参数添加是指ip地址和ip关联的国家、城市、省份和企业等,以及服务端处理时间等等预置参数的添加。另外,在前述的业务逻辑处理中,示例性地,假设针对第一类业务解析了url取出vender(渠道);而针对第二类业务,由于历史原因,userid命名为yy_user,则需要将yy_user处理为userid,以能够保持与全局公参的命名统一,有利于得到全面且规范的数据。另外,前述的兼容性操作可以是指英文大小写的兼容操作,示例性地,预处理数据中可能存在userID,UserId或UserID等等形式,需要将其修正为userid,以能够保持与全局公参的命名统一,确保能够从处理所得的离线治理数据中提取得到userid对应的数据进行储存。再者,前述的字段解析处理可以是Flink任务对第一消息队列中的预处理数据中的JSON字段进行解析,后续用以监控用户行为数据写入存储器中。
在步骤S306中,基于Flink任务对预处理数据进行数据去重处理。数据去重是数据治理处理中的重要一环。重复的数据不仅会增加存储成本,也会各种PV、UV数据的准确性。因此,数据去重处理的意义不止在于节省存储成本,更在于消除不可靠数据源产生的脏数据,从而使得流式计算产生的结果更加准确。
数据去重处理可以采用布隆过滤器去重、引入外部KV数据库去重和Flink结合RocksDB去重等方法。在本申请实施例中,为了保证去重准确性,可以采用Flink结合RocksDB去重的方式。具体地,首先可以在Flink任务中配置算子状态Operator State,该Operator State用于存储目标去重数据。然后可以通过Flink任务在Operator State中查询预处理数据中是否存在目标去重数据。这样的话,在Flink的数据流中,对于每个新的数据记录都可以先查询OperatorState中是否已经存在该数据来实现数据去重。接着,若在Operator State中查询预处理数据中不存在目标去重数据,则将RocksDB配置于Flink任务中作为Flink任务的状态后端State Backend,进而通过Flink任务将预处理数据加载至RocksDB中进行去重处理,实现了使用内嵌的RocksDB状态后端去重,从而可以保证高性能以及数据可靠性。另外,通过将数据存储到磁盘也可以节省内存资源,减少内存压力,并且可以减少依赖外部组件带来的不可控性,同时Flink也提供了一些针对RocksDB的调优方式,简化了RocksDB的使用。
总的来说,本申请利用了Flink对Kafka数据处理的便捷性,能够快速地将数据流入到Flink的ETL任务中以达到数据快速流转的目的。预处理数据经过Flink任务处理后所得的离线治理数据又会流转到第二消息队列(可以视为另一Kafka队列)中进行暂存,从而能够通过第一消息队列和第二消息队列两层Kafka队列的高吞吐特性进行流量削峰,把用户行为数据的数据生产者和数据消费者(数据消费者包含数据处理层和数据存储层)之间的差速给拉平,提高数字基座整体的吞吐性,有效地降低了在数据超高并发场景下带来的数据处理压力和数据存储压力。利用高性能网关服务IKKI和开源流处理平台Kafka的结合,能够满足例如每秒查询率QPS超过两万多并且秒事务处理量TPS超过八万多等数据超高并发场景的高效写入需求。
在一些实施例中,可以将离线治理数据写入Hadoop分布式文件***中实现低成本存储,可以通过调度离线任务工作来获取数据分析结果以进行可视化展示,实现数据稳定查询。下文将结合图4来对数据储存、获取数据分析结果以及对数据分析结果进行可视化展示的具体过程进行详细说明。图4示意性地示出了根据本申请再一实施例的数据离线处理方法的流程示意图,请参阅图4,本申请实施例示出的数据离线处理方法可以包括:
在步骤S401中,通过FlinkSQL任务在第二消息队列中读取离线治理数据。在本申请实施例中,Flink提供了FlinkSQL来支持SQL语句的流处理和批处理能力,从而FlinkSQL任务能够对第二消息队列中的离线治理数据进行消费。
在步骤S402中,通过HiveSQL语句将离线治理数据写入Hadoop分布式文件***中。FlinkSQL任务连接Hive服务之后,可以通过FlinkSQL的特性来使用HiveSQL的语法来将离线治理数据写入HDFS文件中进行存储,从而实现将离线治理数据写入Hadoop分布式文件***中大大简化了数据存储的步骤,提高了开发效率。
上述的HDFS文件是一个可靠、可扩展、适合大数据存储和分析的分布式文件***文件,HDFS(Hadoop Distributed File System)是分布式文件***Hadoop中的一个重要组件。HDFS中的Erasure Coding(纠删码)算法,是一种数据冗余备份技术。该技术可以通过数学算法将原始数据块拆分成若干个数据块,再通过计算出一定数量的冗余数据块,并分别分散到不同的节点上进行存储,从而实现数据的备份。相比于传统的数据备份方式,这种方法大大降低了备份所需的存储空间,提高了数据冗余备份的效率。Erasure Coding算法有两种实现方式,在本申请实施例中可以使用HDFS-EC,而不使用HDFS-RAID,因为前者具有更高的效率和更低的存储成本。本申请实施例通过自建Hadoop集群,基于HDFS的特性实现了每超过10TB、每年PB级别的数据存储能力。
在步骤S403中,通过调用工作流任务调度***DolphinScheduler的API接口构建离线任务工作流。前述的DolphinScheduler是一个可视化DAG工作流任务调度***,支持丰富的任务类型,通过任务之间的依赖关系构建成一个完整的工作流。
在步骤S404中,将目标分析数据类型对应的查询SQL语句进行语法转换,得到目标SQL语句。前述的目标分析数据类型可以包含但不限于数据指标或者数据报表等类型。另外,前述的目标SQL语句为能够在Hive数据库中进行查询的SQL语句,可以是HiveSQL。
在构建任务过程中,由于涉及到Doris数据库和数据仓库工具Hive的SQL语法兼容性问题,因此生成任务时需同时兼容这两种数据库的SQL语法。作为示例,假设SQL语句为:“select param,count(*)as count from table group by param,count”,在GroupBy的语法使用上,Hive数据库不支持具体列名来做聚合,因此需要将该SQL语句转换为“selectparam,count(*)as count from table group by 1,2”。
由于本申请实施例中的目标存储器可以优选地采用Hadoop分布式文件***进行存储,因此在本申请实施例中可以优选地使用Hive作为查询工具。Hive是一个基于Hadoop的数据仓库工具,可以将结构化数据映射到Hadoop的HDFS上,并提供类型SQL查询语言,即HiveSQL来查询和分析数据,由于现有技术栈中已经广泛使用了Hive,因此直接使用Hive作为查询工具能够更好的与现有***集成,提升兼容性。
在本申请实施例中,目标分析数据类型对应的查询SQL语句可以示例性地采用底层动态拼接的方式进行生成。具体地,可以首先根据目标分析数据模型的类型(事件分析类、流量分析类等)来选择具体的SQL模版,类似于模版引擎。然后可以根据业务终端的元数据模版和其他查询条件来确定具体的查询参数和查询列,并且根据使用场景来确定聚合的条件参数。最后将前述的参数填充到上述的SQL模版中,以实现查询SQL语句的动态生成。
在步骤S405中,基于目标SQL语句构建SQL查询任务,通过SQL查询任务以及Trino客户端对Hive数据库进行查询,得到数据分析结果。具体地,将该目标SQL语句建立成一个SQL类型的任务,即SQL查询任务。该SQL查询任务会通过Trino客户端去查询Hive,以进行统计分析并获取各项所需指标的数据分析结果。Trino是一个高度并行和分布式的查询引擎。
在步骤S406中,对查询分析结果进行可视化展示。
在本申请实施例中,步骤S404和步骤S405所执行的内容是离线任务工作流中的第一任务,而将数据分析结果储存至Doris数据库中则是离线任务工作流中的第二任务。特别地,上述第一任务和第二任务之间的关系是串行的,可以在离线任务工作流中创建一个具体的工作流定义,将上述两个任务在离线任务工作流中进行编排,使得第一任务和第二任务保持串行执行,即第一任务执行完毕再执行第二任务。
而由于第一任务和第二任务需要每天都执行,所以还需要为离线任务工作流建立一个定时任务,同时增加重试策略和报警策略,确保第一任务和第二任务每天都能正常保持串行执行。
进一步地,为了保证各种数据看板和数据报表的实时展示质量,提高用户的查询体验,在本申请实施例中,可以通过Spring Boot服务根据目标分析模型生成分析查询SQL语句。其中,目标分析模型可以包括但不限于交叉分析模型、多维漏斗分析模型、全链路分析模型、流量分析模型、事件比对分析模型、漏斗分析模型、留存分析模型、事件分布分析模型和占比分析模型等。
作为示例,上述的全链路分析模型可以用于分析得到用户在分析平台的行为轨迹。上述的流量分析模型可以用于分析得到某个埋点事件的PV、UV以及去重设备总数,PV是指访问量,UV是指独立访客,去重设备总数是指需要去掉的具有重复设备ID的设备总数。上述的事件比对分析模型可以用于对多个埋点事件进行对比分析,可以分析每个埋点事件的PV、UV和去重设备数的区别,也可以对多个埋点事件的PV、UV和去重设备数进行求和以及求均值等统计操作。上述的漏斗分析模型用于通过漏斗图等方式展示某个特定流程中事件的变化情况,主要用于统计和计算转化率等关键数据。上述的多维漏斗分析模型中每一层漏斗可以是多个埋点事件的并集。上述的留存分析模型可以用于根据业务场景以及产品阶段的不同,自定义起始行为和后续行为做留存计算,协助数据采集方分析用户使用产品的粘性。在上述的交叉分析模型可以用于选择多个埋点事件进行分析,得到每个埋点事件的分析结果以及所有埋点事件的交集,示例性地交叉分析所得的分析结果可以以柱状图展示。上述的事件分布分析模型可以用来了解不同区间中埋点事件的发生频次,基于不同埋点事件计算变量之和,以及分析不同页面浏览时长等区间的用户数量分布。上述的占比分析模型可以用于分析得到某个事件的PV、UV以及去重设备总数的占比信息,该占比信息可以以饼图的模式展示。
进一步地,基于生成的分析查询SQL语句在Doris数据库中进行数据查询,得到目标分析结果。进而将目标分析结果转换为展示组件适配数据,展示组件适配数据为与前端Amis组件相适配的数据,以使得前端Amis组件能够对查询分析结果进行可视化展示。
进一步地,可以将展示组件适配数据缓存至Redis中以提升性能,基于Doris和Redis实现了数据分析、可视化数据看板、指标分析、自定义Sql分析等等功能。
其中,上述的指标分析可以对多个事件进行四则运算进行指标自定义,对同一时间单位的多个指标进行分析对比,指标扩大了数据分析的维度与多样性。
上述的自定义Sql分析提供了产品线内数据表与字段给用户,方便用户直接撰写Sql语句来进行多样化分析查询。
上述的可视化数据看板是基础数据分析功能的集合,以卡片、图表和列表等形式进行展示,辅以缓存功能提升数据查询效率。可视化数据看板包括有数据大盘和数据看板。数据大盘用于基于Amis展示每个业务线中最重要的指标,支持网页端和移动端配置展示。定时凌晨全量运行所有查询日期不是今日的预设分析模型并将查询结果缓存至Redis中,早晨定时巡查所有预设分析模型,对缓存失败的模型重新进行查询结果并缓存,从而实现性能提升。由于Amis组件支持移动端,因此移动端数据大盘实现逻辑是:首先进行用户鉴权认证,然后重定向链接至首页大盘,请求后端接口即可展示数据。另外,数据看板分为公共看板和私密看板,可以在业务线中按照业务场景灵活配置。公共看板对本业务线人员有查询权限,对管理员有增删改权限,适用于公共分析场景。而私密看板仅对个人人可见可操作。数据看板的功能是将业务线按照业务场景进行划分,方便为每一个场景做一个看板,看板内的数据可以以卡片、图表、列表等可视化方式展示。可以直接引用预设分析模型中的模型,指标管理中的指标,自助Sql分析中的Sql语句来进行可视化展示。
示例性设备
在介绍了本申请示例性实施方式的方法之后,接下来,参考图5和图6对本发明示例性实施方式的数据离线处理方法的相关产品进行描述。
图5示意性地示出了根据本申请另一实施例的数据离线处理装置的结构示意图。请参阅图5,本申请实施例示出的数据离线处理装置可以包括:
数据获取模块501,用于获取用户行为数据;
预处理模块502,用于对用户行为数据进行数据预处理,得到预处理数据并将预处理数据暂存至第一消息队列中;
治理处理模块503,用于对预处理数据进行数据治理处理,得到离线治理数据并将离线治理数据暂存至第二消息队列中;
数据储存模块504,用于读取离线治理数据并将离线治理数据储存至目标存储器中;
离线处理模块505,用于构建离线任务工作流并通过离线任务工作流获取数据分析结果。
本申请示出的数据离线处理装置通过获取用户行为数据,对用户行为数据进行数据预处理,得到预处理数据并将预处理数据暂存至第一消息队列中,进而对预处理数据进行数据治理处理,得到离线治理数据并将离线治理数据暂存至第二消息队列中。从而能够通过第一消息队列和第二消息队列对数据的暂存作用,把用户行为数据的数据生产方和数据消费方之间的差速拉平,降低了数据处理压力和数据存储压力。
进一步地,本申请能够读取离线治理数据并将离线治理数据储存至目标存储器中,实现低成本存储的目标。进而构建离线任务工作流并通过离线任务工作流获取数据分析结果,实现对数据分析结果的高效稳定查询。
总体来说,本申请提供的方案能够在超高并发的场景下高效写入、低成本存储以及稳定查询,确保数据可视化展示质量,提升用户的使用体验感。
图6示意性地示出了根据本申请实施例的电子设备的示意框图。请参阅图6,电子设备600可以包括处理器601。进一步,该电子设备还可以包括存储器602,其存储有计算机指令,当所述计算机指令由所述处理器601运行时,使得所述电子设备600执行根据前文多个实施例或实施方式所述的方法。
在一些实施场景中,电子设备600可以包括服务器或者终端设备,例如物理服务器、云端服务器、服务器集群、数据处理装置、应用测试机器人、电脑终端、智能终端、PC设备和物联网终端等等。
根据不同的实施场景,上文的处理器601可以是中央处理单元(CentralProcessing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
基于上文,本申请还公开了一种计算机可读存储介质,包含程序指令,当所述程序指令由处理器执行时,使得实现根据前文多个实施例或实施方式所述的方法。
在一些实施场景中,上述计算机可读存储介质可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic Random Access Memory)、静态随机存取存储器SRAM(StaticRandom-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic RandomAccess Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(HybridMemory Cube)等等,或者可以用于存储所需信息并且可以由应用程序、模块或两者访问的任何其他介质。任何这样的计算机存储介质可以是设备的一部分或可访问或可连接到设备。本发明描述的任何应用或模块可以使用可以由这样的计算机可读介质存储或以其他方式保持的计算机可读/可执行指令来实现。
应当注意,尽管在上文详细描述中提及了数据离线处理装置的若干装置或子装置,但是这种划分仅仅并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
申请文件中提及的动词“包括”、“包含”及其词形变化的使用不排除除了申请文件中记载的那些元素或步骤之外的元素或步骤的存在。元素前的冠词“一”或“一个”不排除多个这种元素的存在。
虽然已经参考若干具体实施方式描述了本申请的精神和原理,但是应该理解,本申请并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本申请旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。
Claims (10)
1.一种数据离线处理方法,其特征在于,包括:
获取用户行为数据;
对所述用户行为数据进行数据预处理,得到预处理数据并将所述预处理数据暂存至第一消息队列中;
对所述预处理数据进行数据治理处理,得到离线治理数据并将所述离线治理数据暂存至第二消息队列中;
读取所述离线治理数据并将所述离线治理数据储存至目标存储器中;
构建离线任务工作流并通过所述离线任务工作流获取数据分析结果。
2.根据权利要求1所述的数据离线处理方法,其特征在于,所述对所述预处理数据进行数据治理处理包括:
创建Flink任务;
通过所述Flink任务对所述预处理数据进行数据修饰处理;以及
基于所述Flink任务对所述预处理数据进行数据去重处理。
3.根据权利要求2所述的数据离线处理方法,其特征在于,所述创建Flink任务包括:
生成Flink任务代码;
将所述Flink任务代码打包为JAR包;
通过Flink CLI将所述JAR包传输至Flink集群;
通过调用容器编排引擎Kubernetes的API接口使用Flink镜像建立Docker容器以创建所述Flink任务。
4.根据权利要求2所述的数据离线处理方法,其特征在于,通过所述Flink任务对所述预处理数据进行数据修饰处理包括:
通过所述Flink任务对所述预处理数据进行预置参数添加、业务逻辑处理、兼容性操作以及字段解析处理。
5.根据权利要求2所述的数据离线处理方法,其特征在于,基于所述Flink任务对所述预处理数据进行数据去重处理包括:
在所述Flink任务中配置算子状态Operator State,所述Operator State用于存储目标去重数据;
通过Flink任务在所述Operator State中查询所述预处理数据中是否存在所述目标去重数据;
若不存在,则将RocksDB配置于所述Flink任务中作为所述Flink任务的状态后端StateBackend;
通过所述Flink任务将所述预处理数据加载至所述RocksDB中进行去重处理。
6.根据权利要求1所述的数据离线处理方法,其特征在于,所述读取所述离线治理数据并将所述离线治理数据储存至目标存储器中包括:
通过FlinkSQL任务在所述第二消息队列中读取所述离线治理数据;
通过HiveSQL语句将所述离线治理数据写入Hadoop分布式文件***中。
7.根据权利要求1所述的数据离线处理方法,其特征在于,构建离线任务工作流并通过所述离线任务工作流获取数据分析结果包括:
通过调用工作流任务调度***DolphinScheduler的API接口构建所述离线任务工作流;
将目标分析数据类型对应的查询SQL语句进行语法转换,得到目标SQL语句,所述目标SQL语句为能够在Hive数据库中进行查询的SQL语句;
基于所述目标SQL语句构建SQL查询任务;
通过所述SQL查询任务以及Trino客户端对所述Hive数据库进行查询,得到所述数据分析结果。
8.一种数据离线处理装置,其特征在于,用于执行如权利要求1-7中任一项所述的数据离线处理方法,包括:
数据获取模块,用于获取用户行为数据;
预处理模块,用于对所述用户行为数据进行数据预处理,得到预处理数据并将所述预处理数据暂存至第一消息队列中;
治理处理模块,用于对所述预处理数据进行数据治理处理,得到离线治理数据并将所述离线治理数据暂存至第二消息队列中;
数据储存模块,用于读取所述离线治理数据并将所述离线治理数据储存至目标存储器中;
离线处理模块,用于构建离线任务工作流并通过所述离线任务工作流获取数据分析结果。
9.一种电子设备,其特征在于,包括:
处理器;以及
存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1-7中任一项所述的方法。
10.一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310686537.7A CN116680315A (zh) | 2023-06-09 | 2023-06-09 | 数据离线处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310686537.7A CN116680315A (zh) | 2023-06-09 | 2023-06-09 | 数据离线处理方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116680315A true CN116680315A (zh) | 2023-09-01 |
Family
ID=87778788
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310686537.7A Pending CN116680315A (zh) | 2023-06-09 | 2023-06-09 | 数据离线处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116680315A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117519774A (zh) * | 2023-11-01 | 2024-02-06 | 广州市玄武无线科技股份有限公司 | 一种flink的打包方法、装置、设备及存储介质 |
CN117787902A (zh) * | 2023-12-26 | 2024-03-29 | 航天神舟智慧***技术有限公司 | 基于流批一体的布控预警***与方法 |
-
2023
- 2023-06-09 CN CN202310686537.7A patent/CN116680315A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117519774A (zh) * | 2023-11-01 | 2024-02-06 | 广州市玄武无线科技股份有限公司 | 一种flink的打包方法、装置、设备及存储介质 |
CN117787902A (zh) * | 2023-12-26 | 2024-03-29 | 航天神舟智慧***技术有限公司 | 基于流批一体的布控预警***与方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230004434A1 (en) | Automated reconfiguration of real time data stream processing | |
CN110214313B (zh) | 分布式代码跟踪*** | |
US9418085B1 (en) | Automatic table schema generation | |
US10262050B2 (en) | Distributed database systems and methods with pluggable storage engines | |
CN107451225B (zh) | 用于半结构化数据的可缩放分析平台 | |
US10055426B2 (en) | System and method transforming source data into output data in big data environments | |
US11347740B2 (en) | Managed query execution platform, and methods thereof | |
US9158843B1 (en) | Addressing mechanism for data at world wide scale | |
CN110362544B (zh) | 日志处理***、日志处理方法、终端及存储介质 | |
US10061834B1 (en) | Incremental out-of-place updates for datasets in data stores | |
CN116680315A (zh) | 数据离线处理方法、装置、电子设备及存储介质 | |
US8370303B1 (en) | Generating snapshots of data tables | |
JP2016532199A (ja) | 選択性用データビットインターリーブによるリレーショナルデータベースのマルチカラムインデックスの生成 | |
CN112236761B (zh) | 数据立方体的动态增量更新 | |
US9600559B2 (en) | Data processing for database aggregation operation | |
US11645179B2 (en) | Method and apparatus of monitoring interface performance of distributed application, device and storage medium | |
CN108228322B (zh) | 一种分布式链路跟踪、分析方法及服务器、全局调度器 | |
US9514184B2 (en) | Systems and methods for a high speed query infrastructure | |
CN112948492A (zh) | 一种数据处理***、方法、装置、电子设备及存储介质 | |
CN113312376B (zh) | 一种用于Nginx日志实时处理分析的方法及终端 | |
WO2021191702A1 (en) | Offloading statistics collection | |
CN115391361A (zh) | 一种基于分布式数据库的实时数据处理方法及其装置 | |
Sawyer et al. | Understanding query performance in Accumulo | |
US11620284B2 (en) | Backend data aggregation system and method | |
CN116881277A (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 |