一种数据处理方法、装置、设备及存储介质与流程

文档序号:33318805发布日期:2023-03-03 18:36阅读:50来源:国知局
一种数据处理方法、装置、设备及存储介质与流程

1.本技术涉及大数据技术,尤其涉及一种数据处理方法、装置、设备及存储介质。


背景技术:

2.近年来,运营商致力于建设大数据云平台,其中采集的上网日志数据具有较高的分析价值,可用于客户统一画像、精准营销、关系链挖掘、舆情咨询报告等场景。通常还可以对所采集的上网日志数据进行清洗等预处理,从而提高后续分析结果的准确率。
3.现有技术通常利用mapreduce计算模型对上网日志数据进行预处理。然而,由于不同客户的需求可能不同,往往需要根据客户的具体需求开发出相应的mapreduce程序,导致成本较高。


技术实现要素:

4.为解决上述技术问题,本技术提供一种数据处理方法、装置、设备及存储介质。
5.本技术的技术方案是这样实现的:
6.第一方面,提供了一种数据处理方法,该方法包括:
7.获取日志数据;
8.利用hive sql引擎能够执行的sql语句对所述日志数据进行处理;其中,所述sql语句根据数据接收方的需求进行自定义得到;
9.基于对所述日志数据的处理结果,对所述数据接收方进行响应。
10.上述方案中,所述日志数据包括日志数据类型和日志数据体;所述方法还包括:基于所述日志数据类型,从多种处理器中确定处理所述日志数据体的目标处理器;启动所述目标处理器;所述利用hive sql引擎能够执行的sql语句对所述日志数据进行处理,包括:控制所述目标处理器执行所述hive sql引擎对所述sql语句的解析结果,对所述日志数据体进行处理。
11.上述方案中,所述目标处理器包括主处理器和多个子处理器;所述控制所述目标处理器执行所述hive sql引擎对所述sql语句的解析结果,对所述日志数据体进行处理,包括:控制所述主处理器对所述日志数据体进行预处理,得到中间结果;控制多个子处理器执行所述hive sql引擎对多个sql语句的解析结果,对所述中间结果进行并行处理。
12.上述方案中,所述sql语句包括hive自定义函数;其中,所述hive自定义函数用于执行以下至少一项数据处理功能:加密、定长截取和特定编码。
13.上述方案中,所述基于对所述日志数据的处理结果,对所述数据接收方进行响应,包括:将所述处理结果缓存至缓存区;从所述缓存区获取所述处理结果,并发送至所述数据接收方。
14.上述方案中,所述将所述处理结果缓存至缓存区,包括:根据子处理器与缓存区的第一对应关系,确定所述目标处理器中每个子处理器所对应的缓存区;将每个子处理器的处理结果缓存至对应的缓存区。
15.上述方案中,所述从所述缓存区获取所述处理结果,并发送至所述数据接收方,包括:根据缓存区与数据接收方的第二对应关系,确定所述缓存区对应的数据接收方;将所述缓存区的处理结果发送至对应的数据接收方。
16.上述方案中,所述获取日志数据,包括:基于共享数据传输协议从数据源获取所述日志数据;所述对所述数据接收方进行响应时,包括:基于所述共享数据传输协议,将所述处理结果发送至所述数据接收方。
17.上述方案中,所述数据接收方为集群时,所述将所述处理结果发送至所述数据接收方,包括:将所述处理结果发送至所述集群,以使所述集群对所述处理结果进行存储。
18.第二方面,提供了一种数据处理装置,该装置包括:
19.获取单元,用于获取日志数据;
20.处理单元,用于利用hive sql引擎能够执行的sql语句对所述日志数据进行处理;其中,所述sql语句根据数据接收方的需求进行自定义得到;
21.响应单元,用于基于对所述日志数据的处理结果,对所述数据接收方进行响应。
22.第三方面,提供了一种电子设备,包括:处理器和配置为存储能够在处理器上运行的计算机程序的存储器,其中,所述处理器配置为运行所述计算机程序时,执行前述方法的步骤。
23.第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,其中,该计算机程序被处理器执行时实现前述方法的步骤。
24.采用上述技术方案,根据数据接收方的不同需求自定义不同sql语句,利用hive sql引擎对不同sql语句进行解析得到不同的mapreduce程序,通过执行不同的mapreduce程序,完成对日志数据的不同处理。相对于现有中直接根据不同处理需求开发相应的mapreduce程序,本技术技术方案降低一定开发成本。
附图说明
25.图1为本技术实施例中数据处理方法的第一流程示意图;
26.图2为本技术实施例中数据处理方法的第二流程示意图;
27.图3为本技术实施例中基于sdtp协议的flume数据处理方法的流程示意图;
28.图4为本技术实施例中数据处理方法的第三流程示意图;
29.图5为本技术实施例中数据处理装置组成的结构示意图;
30.图6为本技术实施例中电子设备组成的结构示意图。
具体实施方式
31.为了能够更加详尽地了解本技术实施例的特点与技术内容,下面结合附图对本技术实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本技术实施例。
32.本技术实施例提供了一种数据处理方法,图1为本技术实施例中数据处理方法的第一流程示意图,如图1所示,该数据处理方法具体可以包括:
33.步骤101:获取日志数据。
34.需要说明的是,日志数据指的是计算机操作系统或者应用软件在运行过程中所产生的数据。示例性的,日志数据可以包括音乐类日志数据、视频类日志数据、游戏类日志数
据、上网记录日志数据和语音类日志数据。
35.在一些实施例中,步骤101具体包括:基于共享数据传输协议从数据源获取所述日志数据。
36.这里,数据源顾名思义数据的来源,是提供某种所需要数据的器件或原始媒体。示例性的,数据源可以是各个省份所使用的数据库。
37.实际应用中,本技术的数据处理方法对应的数据处理装置支持共享数据传输协议(shared data transfer protocol,sdtp)的数据采集,故可基于sdtp协议从数据源获取日志数据。
38.步骤102:利用hive sql引擎能够执行的sql语句对所述日志数据进行处理;其中,所述sql语句根据数据接收方的需求进行自定义得到。
39.需要说明的是,由于不同数据接收方需求的不同,故对日志数据进行数据处理时,需基于不同需求进行对应性处理。本技术这里根据数据接收方的不同需求自定义不同sql语句,不同sql语句可以理解为对日志数据体进行不同处理过程的处理策略,通过利用hive sql引擎能够执行的不同sql语句对日志数据进行不同处理,达到满足不同数据接收方需求的目的。
40.具体的,执行数据处理过程时,利用hive sql引擎对自定义sql语句进行解析,得到对应的mapreduce程序,通过执行mapreduce程序完成对日志数据的数据处理。
41.这里,本技术这种利用hive sql引擎对sql语句进行解析生成mapreduce程序的方式,相对于现有技术中直接根据数据接收方对日志数据体的处理需求开发相应的mapreduce程序,降低一定开发成本。
42.步骤103:基于对所述日志数据的处理结果,对所述数据接收方进行响应。
43.示例性的,将日志数据的处理结果直接发送至数据接收方,或者间接发送至数据接收方。
44.示例性的,针对间接发送方式,在一些实施例中,步骤103具体包括:将所述处理结果缓存至缓存区;从所述缓存区获取所述处理结果,并发送至所述数据接收方。
45.需要说明的是,本实施例中将处理结果缓存至缓存区,再从缓存区中获取处理结果并发送至数据接收方,这样做的目的是为了避免直接将处理结果发送至数据接收方时可能出现数据丢失的情况。
46.这里,通常确定数据接收方完整接收处理结果后,将缓存区缓存的处理结果删除,使得节省缓存区一定空间内存。
47.在一些实施例中,所述对所述数据接收方进行响应时,包括:基于所述共享数据传输协议,将所述处理结果发送至数据接收方。
48.实际应用中,本技术的数据处理方法对应的数据处理装置也支持sdtp协议(即共享数据传输协议)的数据发送,即基于sdtp协议将处理结果发送至数据接收方。
49.需要说明的是,本实施例中数据接收方可以是采集端(比如,采集端可以为数据应用租户),基于sdtp协议将处理结果发送至采集端,采集端可以对处理后的日志数据进行下一步解析。
50.在一些实施例中,所述数据接收方为集群时,所述将所述处理结果发送至数据接收方,包括:将所述处理结果发送至集群,以使所述集群对所述处理结果进行存储。
51.需要说明的是,集群(cluster)是由两台或多台节点机(服务器)构成的一种松散耦合的计算节点集合,为用户提供网络服务或应用程序(包括数据库、web服务和文件服务等)的单一客户视图。这里,集群用于为用户提供数据库服务,以对接收到的处理结果进行存储。示例性的,集群至少包括hdfs、kafka。
52.本实施例也就是说,将从缓存区中获取的处理结果发送至集群进行存储,以便后续需要什么类型数据直接从对应的集群获取即可。
53.这里,步骤101至步骤103的执行主体可以为电子设备的处理器。
54.采用上述技术方案,根据数据接收方的不同需求自定义不同sql语句,利用hive sql引擎对不同sql语句进行解析得到不同的mapreduce程序,通过执行不同的mapreduce程序,完成对日志数据的不同处理。相对于现有中直接根据不同处理需求开发相应的mapreduce程序,本技术技术方案降低一定开发成本。
55.在上述实施例基础上,本技术具体给出一种数据处理方法,图2为本技术实施例中数据处理方法的第二流程示意图。
56.如图2所示,具体步骤可以包括:
57.步骤201:获取日志数据;其中,所述日志数据包括日志数据类型和日志数据体。
58.在一些实施例中,该步骤具体包括:基于共享数据传输协议从数据源获取所述日志数据。
59.步骤202:基于所述日志数据类型,从多种处理器中确定处理所述日志数据体的目标处理器。
60.需要说明的是,不同处理器用于对不同类型的日志数据体进行处理,不同类型的日志数据体的处理策略不同,即不同处理器对应不同处理策略。在进行处理操作之前,先根据日志数据类型从多种处理器中确定出处理日志数据体的目标处理器,并启动目标处理器。
61.示例性的,可预先设置日志数据类型与处理器名称的映射关系表,待确定获取的日志数据的日志数据类型后,从映射关系表中确定该日志数据类型对应的目标处理器名称,再根据目标处理器名称启动目标处理器。
62.步骤203:启动所述目标处理器。
63.步骤204:控制所述目标处理器执行hive sql引擎对sql语句的解析结果,对所述日志数据体进行处理;其中,所述sql语句根据数据接收方的需求进行自定义得到。
64.需要说明的是,由于不同数据接收方需求的不同,故对日志数据进行数据处理时,需基于不同需求进行对应性处理。本技术这里根据数据接收方的不同需求自定义不同sql语句,不同sql语句可以理解为对日志数据体进行不同处理过程的处理策略,通过利用hive sql引擎能够执行的不同sql语句对日志数据进行不同处理,达到满足不同数据接收方需求的目的。
65.这里,本技术实施例中利用hive sql引擎对自定义sql语句进行解析,得到对应的mapreduce程序,通过控制目标处理器执行mapreduce程序完成对日志数据的数据处理。
66.示例性的,在一些实施例中,所述目标处理器包括主处理器和多个子处理器;步骤204具体包括:控制所述主处理器对所述日志数据体进行预处理,得到中间结果;控制多个子处理器执行所述hive sql引擎对多个sql语句的解析结果,对所述中间结果进行并行处
理。
67.也就是说,控制主处理器对日志数据体进行一次预处理得到中间结果,再分别并行控制各个子处理器对中间结果进行不同需求的处理。这里,本实施例中日志数据体只会被主处理器预处理一次,但会被所有的子处理器再次进行不同需求的针对性处理。
68.在一些实施例中,所述sql语句包括hive自定义函数;其中,所述hive自定义函数用于执行以下至少一项数据处理功能:加密、定长截取和特定编码。
69.这里,通过在sql语句中设置hive自定义函数,以实现对数据的灵活处理。具体hive自定义函数可以进行加密(如md5加密)、定长截取和特定编码等数据处理。
70.步骤205:基于对所述日志数据的处理结果,对所述数据接收方进行响应。
71.示例性的,将日志数据的处理结果直接发送至数据接收方,或者间接发送至数据接收方。
72.示例性的,针对间接发送方式,在一些实施例中,步骤103具体包括:将所述处理结果缓存至缓存区;从所述缓存区获取所述处理结果,并发送至所述数据接收方。
73.需要说明的是,本实施例中将处理结果缓存至缓存区,再从缓存区中获取处理结果并发送至数据接收方,这样做的目的是为了避免直接将处理结果发送至数据接收方时可能出现数据丢失的情况。
74.这里,通常确定数据接收方完整接收处理结果后,将缓存区缓存的处理结果删除,使得节省缓存区一定空间内存。
75.在一些实施例中,所述将所述处理结果缓存至缓存区,包括:根据子处理器与缓存区的第一对应关系,确定所述目标处理器中每个子处理器所对应的缓存区;将每个子处理器的处理结果缓存至对应的缓存区。
76.也就是说,预先设置子处理器与缓存区的第一对应关系。对处理结果进行缓存时,先根据第一对应关系确定每个子处理器对应的缓存区,再将每个子处理器的处理结果缓存到对应的缓存区。其中,不同子处理器可以对应相同的缓存区,也可以对应不同的缓存区。
77.在一些实施例中,所述从所述缓存区获取所述处理结果,并发送至所述数据接收方,包括:根据缓存区与数据接收方的第二对应关系,确定所述缓存区对应的数据接收方;将所述缓存区的处理结果发送至对应的数据接收方。
78.也就是说,预先设置缓存区与数据接收方的第二对应关系。发送处理结果时,先根据第二对应关系确定缓存区对应的数据接收方,再将缓存区获取的处理结果发送至对应的数据接收方。其中,不同缓存区可以对应相同的数据接收方,也可以对应不同的数据接收方。
79.在一些实施例中,所述对所述数据接收方进行响应时,包括:基于所述共享数据传输协议,将所述处理结果发送至数据接收方。
80.实际应用中,本技术的数据处理方法对应的数据处理装置也支持sdtp协议(即共享数据传输协议)的数据发送,即基于sdtp协议将处理结果发送至数据接收方。
81.需要说明的是,本实施例中数据接收方可以是采集端(比如,采集端可以为数据应用租户),基于sdtp协议将处理结果发送至采集端,采集端可以对处理后的日志数据进行下一步解析。
82.在一些实施例中,所述数据接收方为集群时,所述将所述处理结果发送至数据接
收方,包括:将所述处理结果发送至集群,以使所述集群对所述处理结果进行存储。
83.需要说明的是,集群(cluster)是由两台或多台节点机(服务器)构成的一种松散耦合的计算节点集合,为用户提供网络服务或应用程序(包括数据库、web服务和文件服务等)的单一客户视图。这里,集群用于为用户提供数据库服务,以对接收到的处理结果进行存储。示例性的,集群至少包括hdfs、kafka。
84.本实施例也就是说,将从缓存区中获取的处理结果发送至集群进行存储,以便后续需要什么类型数据直接从对应的集群获取即可。
85.基于上述实施例,本技术不同于单一的采集服务,而是在采集过程中实现了对日志数据的一次解析(即主处理器对日志数据体的预处理过程)、多路处理(即多个子处理器分别对预处理后结果的多路处理)和输出,减少了数据落地和处理次数。
86.采用上述技术方案,根据数据接收方的不同需求自定义不同sql语句,利用hive sql引擎对不同sql语句进行解析得到不同的mapreduce程序,通过控制目标处理器(包括主处理器和多个子处理器)并行执行不同的mapreduce程序,以对日志数据并行进行不同处理,实现对日志数据的灵活处理,同时提高数据处理效率。另外,相对于现有中直接根据不同处理需求开发相应的mapreduce程序,本技术技术方案降低一定开发成本。
87.基于上述实施例,本技术实施例具体给出一种基于sdtp协议的flume数据处理框架,图3为本技术实施例中基于sdtp协议的flume数据处理框架示意图。
88.如图3所示,部署单元30为flume的部署单元(flume agent),主要用于接收数据、处理数据、缓存数据和发送数据。部署单元30包括采集层32(sdtpsource)、处理层33(sdtpprocessor)、缓存层34(channelselector)(包括缓存区1、缓存区2和缓存区3)和发送层(包括发送方1、发送方2和发送方3)。其中,采集层32(sdtpsource)用于接收日志数据;处理层33(sdtpprocessor)用于对日志数据进行处理;缓存层34(channelselector)用于缓存处理后的数据;发送层用于将从缓存层34(channelselector)获取的数据发送到对应的数据接收方(包括接收方1、接收方2和接收方3)。
89.基于图3所示的数据处理框架,给出一种数据处理方法,图4为本技术实施例中数据处理方法的第三流程示意图,如图4所示,数据处理步骤具体可以包括:
90.步骤401:sdtpsource基于sdtp协议从数据源获取日志数据。
91.这里,sdtpsource通过sdtp协议获取由省侧(即数据源)经上报网关31转发的日志数据。其中,日志数据也可以称为xdr数据。
92.通常获取日志数据之前,需要根据接收方需求配置对应的配置信息(例如,数据源地址信息、数据类型信息),以采集对应的日志数据。下面针对配置信息给出一种具体示例。
93.步骤402:sdtpsource基于日志数据类型,从多种处理器中确定处理日志数据体的s1u处理器;其中,日志数据包括日志数据类型和日志数据体。
94.这里,sdtpsource还需要将获取的日志数据转发到sdtpprocessor进行处理,由于sdtpprocessor的不同主处理器处理不同日志数据类型的日志数据体,故需要针对当前日志数据类型匹配对应的主处理器,以将日志数据体发送到对应的主处理器进行预处理。对此,sdtpsource配置信息中设置了存储日志数据类型(即下面示例中xdrtype)与主处理器之间映射关系的文件路径(即下面示例中理由router.confpath这个配置,指向一个本地文件路径),后续通过访问该文件路径即可确定处理日志数据体的主处理器。
95.示例性的,sdtpsource配置信息可以包括:
96.#sdtp source绑定的ip地址和端口
97.agent.sources.src1.bind=10.154.6.3
98.agent.sources.src1.port=9100
99.#source的类型
100.agent.sources.src1.type=flume.sdtp.sdtpsource
101.#source给处理的数据增加额外的标签
102.agent.sources.src1.extra.header=province:js
103.#source使用的私钥文件和服务端证书
104.agent.sources.src1.key.file.path=/home/flume/certs/server.key
105.agent.sources.src1.cert.file.path=/home/flume/certs/server.crt
106.agent.sources.src1.ca.file.path=/home/flume/certs/ca.crt
107.#source使用的router文件,用来表示xdrtype和主处理器的映射关系
108.agent.sources.src1.router.confpath=/home/flume/router.conf
109.其中,如下格式指定了xdr type和主处理器的映射关系。确定xdr type为2时,确定主处理器为s1u;确定xdr type为201时,确定主处理器为mc_voice。
110.router.conf配置示例包括:
111.2:s1u
112.201:mc_voice
113.步骤403:sdtpprocessor控制s1u处理器对日志数据体进行预处理,得到中间结果。
114.示例性的,sdtpprocessor针对s1u处理器的配置信息可以包括:
115.#source内置的处理器列表,可以有多个处理器,用逗号分开
116.agent.sources.src1.processors=s1u
117.#s1u处理器的子处理器列表,可多个
118.agent.sources.src1.processor.s1u.processors=hdfs,kafka
119.#是否检查数据延迟agent.sources.src1.processor.s1u.latencyinspector.on=true
120.#s1u处理定长数据
121.agent.sources.src1.processor.s1u.input.column.lengths=2,2,2,2,2,1,1,16,
122.1,8,8,16,1,8,8,8,8,1,1,1,1,1,1,1,1,1,1,1,4,2,1,4,1,2,1,4,4,4,16,16,16,
123.即s1u处理器可用于检查数据时效性,还可用于对定长数据(如上述配置信息所示)和符号分割数据(comma-separated values,csv)进行处理。
124.其中,定长数据的格式定义由s1u处理器中的input.column.lengths来指定,每一列指定一个长度,如1+[16]*n这个特殊字段,为1字节头部+16*n字节组成,适配数据中的可变字段定义的逻辑。如果是csv格式,则需要定义input.column.num属性配置字段个数,以及input.column.delimiter属性配置字段分隔符。
[0125]
这里,日志数据只会被s1u处理器处理一次,但是会被s1u处理器中所有的子处理器(包括hdfs子处理器和kafka子处理器)分别进行处理。
[0126]
步骤404:sdtpprocessor控制s1u处理器中的三个子处理器执行hive sql引擎对三个sql语句的解析结果,对中间结果进行并行处理,得到三种处理结果;
[0127]
这里,针对s1u处理器其中两个子处理器进行具体示例,即hdfs子处理器和kafka子处理器。
[0128]
示例性的,sdtpprocessor针对s1u处理器中hdfs子处理器和kafka子处理器的配置信息包括:
[0129]
#hdfs子处理器
[0130]
agent.sources.src1.processor.s1u.processor.hdfs.serializer.type=txt
[0131]
agent.sources.src1.processor.s1u.processor.hdfs.serializer.maxrecordnum=1
[0132]
agent.sources.src1.processor.s1u.processor.hdfs.serializer.delimiter=|
[0133]
#sql语句
[0134]
agent.sources.src1.processor.s1u.processor.hdfs.sql=selectc1,tbcd(c2),tbcd(c3),
[0135]
tbcd(c4),tbcd(c5),c6,c7,c8,c9,tbcd(c10),tbcd(c11),sm4bytes(tbcd(c12),
[0136]
bytestotimestamp(c14)),c13,bytestotimestamp(c14),bytestotimestamp(c15),
[0137]
bytestodouble(c16),bytestodouble(c17),c18,c19,c20,c21,c22,c23,c24,c25,
[0138]
c26,c27,c28,c29,c30,c31,c32,c33,c34,c35,c36,c37,bytestoipv4(c38),
[0139]
bytestoipv6(c39),bytestoip(c40),bytestoip(c41),c42,c43,c44,c45,c46,c47,c48,
[0140]
bearerdecodes1u220(c49)from event where c1 is not null and c12 is not null
[0141]
#kafka子处理器
[0142]
agent.sources.src1.processor.mme.processor.kafka.serializer.maxrecordnum=1000
[0143]
agent.sources.src1.processor.mme.processor.kafka.serializer.type=txt
[0144]
agent.sources.src1.processor.mme.processor.kafka.serializer.delimiter=|
[0145]
#sql语句
[0146]
agent.sources.src1.processor.mme.processor.kafka.sql=select c9,null(),c2,null(),null(),sm4bytes(tbcd(c6),c10),sm4bytes(normalize(tbcd(c8)),c10),sm4bytes(tb cd(c7),c10),c10,null(),null(),null(),c33,c34,subbytes(tbcd(c6),0,3),subbytes(normaliz e(tbcd(c8)),0,7),subbytes(tbcd(c7),0,6)from event where c1 is not null
[0147]
其中,hdfs子处理器用于检查日志数据的文件格式是否为txt文件格式,及最大记录数是否为1,及字段分隔符是否为“|”。hdfs子处理器中还自定义了sql语句,主要用于增添一些数据处理功能。
[0148]
kafka子处理器用于检查日志数据的文件格式是否为txt文件格式,及最大记录数是否为1000,及字段分隔符是否为“|”。kafka子处理器中还自定义了sql语句,主要用于增添一些数据处理功能。
[0149]
这里,本技术这种利用hive sql引擎对sql语句进行解析生成mapreduce作业的方式,相对于直接根据数据接收方对日志数据体的处理需求开发相应的mapreduce程序,降低一定开发成本。
[0150]
步骤405:sdtpprocessor将三种处理结果缓存到三个缓存区;
[0151]
基于该步骤的实现,channelselector需预先设置好缓存区信息。示例性的,channelselector配置信息包括:
[0152]
#设置selector类型
[0153]
agent.sources.src1.selector.type=multiplexing
[0154]
agent.sources.src1.selector.header=target
[0155]
#定义不同channel的映射标签
[0156]
agent.sources.src1.selector.mapping.ch1=ch1(即缓存区1)
[0157]
agent.sources.src1.selector.mapping.ch2=ch2(即缓存区2)
[0158]
另外,sdtpprocessor配置信息还包括:
[0159]
#在processor中标记结果输出到哪个channel
[0160]
agent.sources.src2.processor.ps_gen.processor.hdfs.extra.header=target:ch1
[0161]
agent.sources.src2.processor.ps_gen.processor.kafka.extra.header=target:ch2
[0162]
即将hdfs子处理器处理后的处理结果缓存到ch1(即缓存区1),将kafka子处理器处理后的处理结果缓存到ch2(即缓存区2)。这里,未针对缓存区3示例对应的配置信息。
[0163]
步骤406:发送层从三个缓存区获取三种处理结果,并行发送到三个数据接收方。
[0164]
这里,发送层包括3个发送方,例如:hdfssinks、kafkasinks和sdtpsinks。其中,hdfssinks从缓存区1中获取获取处理结果,并发送到hdfs集群(即接收方1)进行存储。kafkasinks从缓存区2中获取获取处理结果,并发送到kafka集群(即接收方2)进行存储。sdtpsinks从缓存区3中获取获取处理结果,并基于sdtp协议将此处理结果发送到下一个采集端(即接收方3)。
[0165]
这里,sdtpsinks中需要提前配置接收方3的地址信息、数据传输方式等。
[0166]
基于上述实施例展现的数据处理方法,sdtpprocessor处理后的数据可发送至hdfs、kafka存储以及sdtpsink,实现多路输出。不同于单一的采集服务,本技术不需要kafka、storm集群进行额外的数据处理,在采集过程中实现了数据的多版本配置、自定义sql解析处理、sdtp协议插件等优化设计,已形成了一套flume支持sdtp协议数据传输插件,可应用于线上dpi数据采集系统,完成31省上网日志数据采集,每天采集的数据量超过550tb。
[0167]
采用上述技术方案,根据数据接收方的不同需求自定义不同sql语句,利用hive sql引擎对不同sql语句进行解析得到不同的mapreduce程序,通过控制目标处理器(包括主处理器和多个子处理器)并行执行不同的mapreduce程序,以对日志数据并行进行不同处理,实现对日志数据的灵活处理,同时提高数据处理效率。另外,相对于现有中直接根据不同处理需求开发相应的mapreduce程序,本技术技术方案降低一定开发成本。
[0168]
为实现本技术实施例的方法,基于同一发明构思,本技术实施例中还提供了一种数据处理装置,图5为本技术实施例中数据处理装置组成的结构示意图,如图5所示,该数据处理装置包括:
[0169]
获取单元501,用于获取日志数据;
[0170]
处理单元502,用于利用hive sql引擎能够执行的sql语句对所述日志数据进行处理;其中,所述sql语句根据数据接收方的需求进行自定义得到;
[0171]
响应单元503,用于基于对所述日志数据的处理结果,对所述数据接收方进行响应。
[0172]
采用上述技术方案,根据数据接收方的不同需求自定义不同sql语句,利用hive sql引擎对不同sql语句进行解析得到不同的mapreduce程序,通过执行不同的mapreduce程序,完成对日志数据的不同处理。相对于现有中直接根据不同处理需求开发相应的mapreduce程序,本技术技术方案降低一定开发成本。
[0173]
在一些实施例中,所述日志数据包括日志数据类型和日志数据体;基于所述日志数据类型,从多种处理器中确定处理所述日志数据体的目标处理器;启动所述目标处理器;处理单元502,具体用于控制所述目标处理器执行所述hive sql引擎对所述sql语句的解析结果,对所述日志数据体进行处理。
[0174]
在一些实施例中,所述目标处理器包括主处理器和多个子处理器;所述控制所述目标处理器执行所述hive sql引擎对所述sql语句的解析结果,对所述日志数据体进行处理,包括:控制所述主处理器对所述日志数据体进行预处理,得到中间结果;控制多个子处理器执行所述hive sql引擎对多个sql语句的解析结果,对所述中间结果进行并行处理。
[0175]
在一些实施例中,所述sql语句包括hive自定义函数;其中,所述hive自定义函数用于执行以下至少一项数据处理功能:加密、定长截取和特定编码。
[0176]
在一些实施例中,响应单元503,具体用于将所述处理结果缓存至缓存区;从所述缓存区获取所述处理结果,并发送至所述数据接收方。
[0177]
在一些实施例中,所述将所述处理结果缓存至缓存区,包括:根据子处理器与缓存区的第一对应关系,确定所述目标处理器中每个子处理器所对应的缓存区;将每个子处理器的处理结果缓存至对应的缓存区。
[0178]
在一些实施例中,所述从所述缓存区获取所述处理结果,并发送至所述数据接收方,包括:根据缓存区与数据接收方的第二对应关系,确定所述缓存区对应的数据接收方;将所述缓存区的处理结果发送至对应的数据接收方。
[0179]
在一些实施例中,获取单元501,具体用于基于共享数据传输协议从数据源获取所述日志数据;所述对所述数据接收方进行响应时,包括:基于所述共享数据传输协议,将所述处理结果发送至所述数据接收方。
[0180]
在一些实施例中,所述数据接收方为集群时,所述将所述处理结果发送至所述数
据接收方,包括:将所述处理结果发送至所述集群,以使所述集群对所述处理结果进行存储。
[0181]
本技术实施例还提供了另一种电子设备,图6为本技术实施例中电子设备组成的结构示意图,如图6所示,该电子设备包括:处理器601和配置为存储能够在处理器上运行的计算机程序的存储器602;
[0182]
其中,处理器601配置为运行计算机程序时,执行前述实施例中的方法步骤。
[0183]
当然,实际应用时,如图6所示,该电子设备中的各个组件通过总线系统603耦合在一起。可理解,总线系统603用于实现这些组件之间的连接通信。总线系统603除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图6中将各种总线都标为总线系统603。
[0184]
在实际应用中,上述处理器可以为特定用途集成电路(asic,application specific integrated circuit)、数字信号处理装置(dspd,digital signal processing device)、可编程逻辑装置(pld,programmable logic device)、现场可编程门阵列(field-programmable gate array,fpga)、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的设备,用于实现上述处理器功能的电子器件还可以为其它,本技术实施例不作具体限定。
[0185]
上述存储器可以是易失性存储器(volatile memory),例如随机存取存储器(ram,random-access memory);或者非易失性存储器(non-volatile memory),例如只读存储器(rom,read-only memory),快闪存储器(flash memory),硬盘(hdd,hard disk drive)或固态硬盘(ssd,solid-state drive);或者上述种类的存储器的组合,并向处理器提供指令和数据。
[0186]
在示例性实施例中,本技术实施例还提供了一种计算机可读存储介质,用于存储计算机程序。
[0187]
可选的,该计算机可读存储介质可应用于本技术实施例中的任意一种方法,并且该计算机程序使得计算机执行本技术实施例的各个方法中由处理器实现的相应流程,为了简洁,在此不再赘述。
[0188]
在本技术所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
[0189]
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
[0190]
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理模块中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相
关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0191]
本技术所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
[0192]
本技术所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
[0193]
本技术所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
[0194]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1