CN103077192A - 一种数据处理方法及其系统 - Google Patents
一种数据处理方法及其系统 Download PDFInfo
- Publication number
- CN103077192A CN103077192A CN2012105684198A CN201210568419A CN103077192A CN 103077192 A CN103077192 A CN 103077192A CN 2012105684198 A CN2012105684198 A CN 2012105684198A CN 201210568419 A CN201210568419 A CN 201210568419A CN 103077192 A CN103077192 A CN 103077192A
- Authority
- CN
- China
- Prior art keywords
- data
- packet
- data processing
- pipeline
- setting
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据处理方法,该方法包括:步骤一,将待处理的数据划分为多个数据包;步骤二,对部分或全部数据包设定各自的数据处理过程;步骤三,根据各个设定的数据处理过程,同时分别对各个数据包中的数据进行处理。本发明通过将各个数据包的数据处理作业分发至不同的管道中独立地执行,使得能够在各个管道中并行执行各个数据包的数据处理,节省了大量的时间;而且,各个数据包的数据处理过程可以根据用户的需要进行设定,对于不太重要的数据可以不进行,使得具有高扩展性。
Description
技术领域
本发明涉及数据挖掘领域,尤其涉及一种数据处理方法及其系统。
背景技术
近些年,随着互联网用户的剧增,互联网系统的访问量越来越大,产生了大量数据。当前,许多企业利用这些数据来分析用户的行为,从而预测市场前景。可见,数据已经成为现代企业的重要资源,是企业运用科学管理、决策分析的基础,目前,大多数企业花费大量的资金和时间来构建联机事物处理的业务系统和办公自动化系统,用来记录事物处理的各种相关数据。
然而,对元数据进行处理是联机分析处理、数据挖掘的基础,因此,构建数据仓库的过程一个极其重要的环节。
在现有技术中,ETL(Extraction-Transformation-Loading)数据转换方法被广泛应用与数据仓库的构建。如图1所示,ETL能将分布的、异构数据源中的元数据抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,构建了目标数据仓库。
目前比较成熟的ETL商业工具有IBM Datastage、DTS和OracleWarehouse Builder等,这些商业工具设计的初衷是帮助不具备计算机专业知识的用户设计ETL作业,从而都以元数据驱动的方式实现,这反而增加了这些商业工具的复杂性,其设计的复杂性直接或间接地导致了数据处理的效率低下和系统可扩展性差。由于商业工具一般都价格昂贵,很多小型企业都选择开发自己的ETL工具,用以构建数据仓库,然而自行开发的ETL工具维护成本相当高,一些开源工具的出现,在一定程度上弥补了这些问题,如KETL、Kettle、CloverETL等。然而,这些开源工具也都具有前述的商业工具中存在的问题。
综上所述,当前需要一种高效地、可扩展性强的方案来解决上述问题。
发明内容
本发明所要解决的技术问题之一是需要提供一种高效、可扩展性强的数据处理方法。
为了解决上述技术问题,本发明提供了一种数据处理方法,该方法包括:步骤一,将待处理的数据划分为多个数据包;步骤二,对部分或全部数据包设定各自的数据处理过程;步骤三,根据各个设定的数据处理过程,同时分别对各个数据包中的数据进行处理。
根据本发明又一方面的数据处理方法,在所述步骤一中,根据设定模式将待处理的数据划分为多个数据包,其中,所述设定模式为按时间划分或按数据大小划分。
根据本发明又一方面的数据处理方法,所述步骤二进一步包括:将所述各个设定的数据处理过程分别定义为各个数据处理作业,其中,所述数据处理作业包括数据包的名称和与所述数据包的数据处理过程中所包含的各步骤相对应的方法属性。
根据本发明又一方面的数据处理方法,在所述步骤三中,具体包括以下步骤:分析并检查所述各个数据处理作业的语法;根据所述数据处理作业中数据包的名称,将语法正确的各个数据处理作业分发至与所述名称相关联的各个管道中;所述各个管道同时根据各个作业中的方法属性,调用相应的方法对该数据包中的数据进行处理,其中,所述各个管道为预先设定的针对各个数据包的数据处理过程的调用方法的函数,预先设定的管道的数量与将待处理的数据划分后的数据包的数量相同。
根据本发明又一方面的数据处理方法,所述数据处理过程设定为按照以下顺序进行操作的前设定个步骤:第一步进行设置步骤,该设置步骤执行在对数据处理之前的初始化处理,其中,所述初始化处理包括建立数据库表,并根据所述各个数据包的数量对所述数据库表进行分区的操作;第二步进行抽取步骤,该抽取步骤将元数据抽取出来;第三步进行转换步骤,该转换步骤将抽取出来的元数据进行合并、清洗、分类、分拣和列检索处理;第四步进行装载步骤,该装载步骤将执行完所述转换步骤后的数据加载至相应数据库中;第五步进行拆卸步骤,该拆卸步骤处理后续操作,所述后续操作包括删除文件和生成统计信息表。
根据本发明又一方面的数据处理方法,采用插件的方式来设计各个数据处理作业。
根据本发明又一方面的数据处理方法,所述管道在当前主机的一个线程中运行或在另一个主机的独立的进程中运行。
根据本发明又一方面的数据处理方法,还包括:利用PERL语言中的Log4perl模块,对所述管道调用相应的方法对该数据包中的数据进行处理的过程进行监控。
根据本发明的另一方面,还提供了一种数据处理系统,包括:划分模块,将待处理的数据划分为多个数据包;设定模块,对部分或全部数据包设定各自的数据处理过程;处理模块,根据各个设定的数据处理过程,同时分别对各个数据包中的数据进行处理。
根据本发明又一方面的数据处理系统,所述设定模块进一步执行:将所述各个设定的数据处理过程分别定义为各个数据处理作业,其中,所述数据处理作业包括数据包的名称和与所述数据包的数据处理过程中所包含的各步骤相对应的方法属性;
在所述处理模块进一步包括:
任务分析器,其分析并检查所述各个数据处理作业的语法;
任务分发器,根据所述数据处理作业中数据包的名称,将语法正确的各个数据处理作业分发至与所述名称相关联的各个管道中;
所述各个管道,同时根据各个作业中的方法属性,调用相应的方法对该数据包中的数据进行处理,其中,
所述各个管道为预先设定的针对各个数据包的数据处理过程的调用方法的函数,预先设定的管道的数量与将待处理的数据划分后的数据包的数量相同。
与现有技术相比,本发明的一个或多个实施例可以具有如下优点:
本发明通过将各个数据包的数据处理作业分发至不同的管道中独立地执行,使得能够在各个管道中并行执行各个数据包的数据处理,节省了大量的时间;而且,各个数据包的数据处理过程可以根据用户的需要进行设定,对于不太重要的数据可以不进行,使得具有高扩展性。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:
图1是现有技术中ETL数据转换方法的流程示意图。
图2是根据本发明第一实施例的数据处理方法的流程示意图;
图3是根据本发明第一实施例的数据处理方法中的在管道中处理数据的流程示意图;
图4是根据本发明第二实施例的数据处理系统的结构示意图;
图5是根据本发明第二实施例的数据处理系统中的数据处理模块的结构示意图;
图6是利用本发明的数据处理系统对数据进行处理的实验结果示意图;
图7是利用本发明的数据处理系统和开源工具KETTLE进行数据处理的对比示意图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
第一实施例
图2是根据本发明第二实施例的数据处理方法的流程示意图,下面参考图2,详细说明本发明方法的各个步骤。
步骤S210,将待处理的数据划分为多个数据包。
具体地,将待处理的数据按照设定模式划分为多个数据包,其中设定模式包括按时间划分和按大小划分的模式。
例如,待处理的数据为某系统十小时的日志数据,将该日志数据按每个小时来划分成十个数据包,将每个数据包存储在一个压缩包内,共得到十个压缩包,各个数据包的名称分别为task1、task2、…、task10。
需要说明的是,现有技术的数据处理是将待处理的数据作为一个整体(不考虑该整体的大小)进行数据处理,即是一个端到端的过程。而本实施例在进行数据处理之前,需要将待处理的数据划分(或分区)为多个数据包,后续根据需要设定部分或所有数据包的数据处理过程,并将各个数据处理过程定义为各个数据处理作业,然后再对定义的数据处理作业进行处理。这样,在对分区后的数据进行处理时,既可以避免数据的重复处理,又可以加速数据的处理过程和查询操作。
步骤S220,对部分或全部数据包设定数据处理过程。
本步骤以PERL语言为例来实现数据处理。具体地,需要将各个数据处理过程分别定义为各个数据处理作业(以下简称作业),其中,各个数据处理作业包括各个数据包的名称和与各个数据处理过程中各个步骤对应的方法属性。
现有技术中ETL方法的整个数据处理过程包括以下步骤:抽取、转换和装载。在本发明实施例中,完整的数据处理过程按照设置、提取、转换、装载和拆卸的顺序来实现数据的处理。其中,设置步骤执行在对数据处理之前的初始化处理,初始化处理包括建立数据库表,并根据各个数据包的数量对数据库表进行分区;拆卸步骤,处理后续操作,所述后续操作包括删除文件和生成统计信息表。其他的步骤与ETL方法中涉及到的步骤大体相同,在此不作赘述。
在根据需要对部分或全部的数据包设定数据处理过程时,可以设定为按照以下顺序进行操作的前设定个步骤:第一步进行设置步骤,执行在对数据处理之前的初始化处理;第二步进行抽取步骤,将元数据抽取出来;第三步进行转换步骤,将抽取出来的元数据进行合并、清洗、分类、分拣和列检索处理;第四步进行加载步骤,将转换后的数据加载至相应数据库中;第五步进行拆卸步骤,处理后续操作。即,具体包括以下几种数据处理过程:(1)设置;(2)设置→提取;(3)设置→提取→转换;(4)设置→提取→转换→装载;(5)设置→提取→转换→装载→拆卸。
这样可以按需设定部分或全部数据包所要执行的数据过程,针对不重要的数据可以省略掉多个处理步骤或不进行数据处理,节省了大量的时间,提高了数据处理过程的灵活性。
本实施例优选地,采用插件的方式来设计数据处理作业。这样,一个作业可以插入到该系统中,也可以从该系统中卸载,使得本系统的结构简单,保证了数据处理效率。
每一个作业都可以顺序定义设置(Setup)、提取(Extract)、转换(Transform)、装载(Load)和拆卸(Teardown)这五个方法属性中的前几个方法属性,对应各个方法属性的表现形式可如下所示:
Sub method_name:Setup(qw(task_name1,…))
Sub method_name:Extract(qw(task_name1,…))
Sub method_name:Transfor(qw(task_name1,…))
Sub method_name:Load(qw(task_name1,…))
Sub method_name:Teardown(qw(task_name1,…))
其中,method_name是一个Perl名称,只需要符合Perl语言方法命名规则即可;Setup是方法属性,表示该Setup方法将在数据处理过程中第一步调用,其它的属性类似;qw(task_name1,…)是属性的值(也是作业的名称),表示该方法属于哪些作业。一般,不推荐让一个方法属于多个不同的任务(不同的作业),因为若一个方法属于多个不同的任务会使整个作业逻辑变得复杂。因此,在本发明中,优选地,使一个方法只属于一个作业。
例如,可以将上述例子中的名称为task1的数据包的作业定义为:
Task1:
-sub step1:Setup(task1)()
-sub step2:Extract(task1)()
-sub step3:Transform(task1)()
-sub step4:Load(task1)()
-sub step5:Teardown(task1)()
还可以定义为:
Task1:
-sub step1:Setup(task1)()
-sub step2:Extract(task1)()
-sub step3:Transform(task1)()
通过这样的定义,系统能统计有哪些作业需要运行及与该作业所要执行数据处理过程相关联的方法。
步骤S230,分析并检查各个数据处理作业的语法。
具体地,基于预先定义的语法来检查各个数据处理作业的语法,若与之前定义的语法一致,则判断该数据处理作业的语法正确,否则,判断为错误。
在本实施例中,利用PERL语言的方法属性处理器(Perl AttributeHandler)定义了五种PERL语言方法属性的语法,分别为:
Sub Setup:ATTR(CODE){};
Sub Extract:ATTR(CODE){};
Sub Transfor:ATTR(CODE){};
Sub Load:ATTR(CODE){};
Sub Teardown:ATTR(CODE){};
若作业与上述定义的语法一致,则判断该作业的语法是正确的,否则,判断结果为该作业的语法是错误的。
例如:某作业的一个方法属性定义如下:
sub~step2:Extract(task5)(),通过对其语法、语义检查,所得到的检查结果错误。这是因为根据PERL语言的方法属性处理器,方法名只能由英文字母(大小写)、数字和下划线的组合。
步骤S240,根据数据处理作业中数据包的名称,将语法正确的各个数据处理作业分发至与名称相关联的各个管道中。
其中,各个管道为预先设定的针对各个数据包的数据处理过程的调用方法的函数,预先设定的管道的数量与将待处理的数据划分后的数据包的数量相同。
也就是说,在本发明实施例中,将待处理数据划分为多少个数据包,则预先设定多少个管道,且各个管道定义了名称属性和方法属性,例如:
etl pipeline=etl job。
管道的定义同作业的定义,如ETL作业task1定义如下:
-sub step1:Setup(task1){}
-sub step2:Extract(task1){}
-sub step3:Transform(task1){}
-sub step4:Load(task1){}
-sub step5:Teardown(task1){}
task1作业定义了这5个方法,则会将该作业分发至管道的属性值为“task1”的管道中,该管道会调用上述五个方法的代码,调用次序为:step1->step2->step3->step4->step5,然后这个调用过程就叫做pipeline,属性值对应task1。
又如ETL作业task2定义如下:
-sub step1:Setup(task2){}
-sub step2:Extract(task2){}
-sub step3:Transform(task2){}
-sub step4:Load(task2){}
-sub step5:Teardown(task2){}
那就多了一个pipeline,属性值对应task2。
每个管道可以在当前的一个线程中运行,也可以在另一个主机上的一个独立进程中运行。这样可以提高整体数据的数据处理效率,且不同任务之间互不干扰,在去掉一个已有作业或增加一个新的作业时都不会影响到其它正常作业的运行,实现了可扩展性。
步骤S250,各个管道同时根据各个作业中的方法属性,调用相应的方法对该数据包中的数据进行处理。
例如,作业Task1定义了Setup()、Extract()、Transform()、Load()、Teardown()五个属性,则执行该作业的管道中定义的方法属性为Setup()、Extract()、Transform()、Load()、Teardown()五种方法属性,该管道中定义的该方法语法信息会被当作参数传入与其属性相对应的属性定义方法中,也就是该管道通过将其语法信息作为参数来调用上述五种方法属性对应的方法处理。
语法信息包括:该方法所在类名,包含该方法的符号表引用,该方法的引用,方法属性的名称,属性的数据,该方法触发属性处理器的阶段,属性处理器所在文件及在该文件的行号。
例如,语法信息可以表示如下:
如果用户定义了如下方法:
Package ETLJob;
Sub step1:Setup(task1){
}
那么会把step1方法的语法信息传递给Setup属性的定义函数,那么package的值为”ETLJob”,即step1方法定义所在的包;symbol为符号表的引用;referent为step1方法的引用;attr为属性Setup的数据,这里为task1;phase是指step1在编译处理的那个阶段被调用;filename是Setup属性定义的文件名;linenum是Setup属性定义所在文件的行号。
需要说明的是,若一个数据包的数据处理过程没有设置第四步骤,即没有设置装载步骤,那么就不会生成相应的数据表。若想要生成待处理数据的所有数据包的数据表,则需要在设定各个数据包的数据处理过程时,至少要设定到第四步骤。
对于任一个作业来说,将其放入至与其关联的管道中运行,这相当于将作业当作插件插入至本系统中,即使新的作业有语法、功能等错误,也不会影响到它的运行。也可以指定只运行某些作业,这相当于把另外一些不需要处理的作业当作插件从本系统中卸载掉,从而使得本系统具有高扩展性。
图3是根据本发明第一实施例的数据处理方法中的在管道中处理数据的流程示意图,具体地,根据作业的方法属性定义,如某作业只定义了setup属性,则其运行级别为1,若定义了setup()、extract()属性,则运行级别为2,依次类推,上述作业“task1”的运行级别为5,因此根据图3所示,在执行task1的数据处理过程时,需要一次调用设置(Setup)、提取(Extract)、转换(Transform)、装载(Load)和拆卸(Teardown)等方法。
需要说明的是,上述步骤S230至步骤S250是根据各个设定的数据处理过程,同时分别对各个数据包中的数据进行处理的基于PERL语言的详细步骤,还可以使用其他的语言来实行。
另外,在本系统中,还可以采用Log4perl模块输出每个管道的每一步运行日志,并在此基础上实现了基于日志分析的监控系统。从而能够实时监控线上系统运行情况,例如系统中的每一个作业所花费的时间等。
第二实施例
图4是根据本发明第一实施例的数据处理系统的结构示意图,下面参考图4来详细说明本系统的各个组成部分。
该系统包括划分模块41、设定模块42和处理模块43。其中,划分模块41,将待处理的数据划分为多个数据包;设定模块42,对部分或全部数据包设定各自的数据处理过程;处理模块43,根据各个设定的数据处理过程,同时分别对各个数据包中的数据进行处理。
需要说明的是,现有技术的数据处理是将待处理的数据作为一个整体(不考虑该整体的大小)进行数据处理,即是一个端到端的过程。而本实施例在进行数据处理之前,需要将待处理的数据划分(或分区)为多个数据包(即上述划分模块),后续根据需要设定部分或所有数据包的数据处理过程(即上述设定模块),并将各个数据处理过程定义为各个数据处理作业,然后再对定义的数据处理作业进行处理。这样,在对分区后的数据进行处理时,既可以避免数据的重复处理,又可以加速数据的处理过程和查询操作。
划分模块41根据设定模式将待处理的数据划分为多个数据包,其中,设定模式可以为按时间划分或按数据大小划分。
例如,划分模块41将一个待处理的数据(共五个小时的数据)按照每小时来划分,可以得到5个数据包,各个数据包的名称分别为task1、task2、task3、task4和task5。
现有技术中ETL方法的整个数据处理过程包括以下步骤:抽取、转换和装载。在本发明实施例中,完整的数据处理过程包括设置、提取、转换、装载和拆卸这五个步骤。其中,设置步骤执行在对数据处理之前的初始化处理,初始化处理包括建立数据库表,并根据各个数据包的数量对数据库表进行分区;拆卸步骤,处理后续操作,所述后续操作包括删除文件和生成统计信息表。
设定模块42在根据需要对部分或全部的数据包设定数据处理过程时,可以设定为按照以下顺序进行操作的前设定个步骤:第一步进行设置步骤,执行在对数据处理之前的初始化处理;第二步进行抽取步骤,将元数据抽取出来;第三步进行转换步骤,将抽取出来的元数据进行合并、清洗、分类、分拣和列检索处理;第四步进行加载步骤,将转换后的数据加载至相应数据库中;第五步进行拆卸步骤,处理后续操作。即,具体包括以下几种数据处理过程:(1)设置;(2)设置→提取;(3)设置→提取→转换;(4)设置→提取→转换→装载;(5)设置→提取→转换→装载→拆卸。
这样可以按需设定部分或全部数据包所要执行的数据过程,针对不重要的数据可以省略掉多个处理步骤或不进行数据处理,节省了大量的时间,提高了数据处理过程的灵活性。
在本发明实施例中,说明以PERL语言来实现的处理模块43,但本实施例仅为一个示例。
另外,设定模块42进一步执行:将各个设定的数据处理过程分别定义为各个数据处理作业,其中,所述数据处理作业包括数据包的名称和与所述数据包的数据处理过程中所包含的各步骤相对应的方法属性。
本实施例优选地,设定模块42采用插件的方式来设计数据处理作业。这样,一个作业可以插入到该系统中,也可以从该系统中卸载,使得本系统的结构简单,保证了数据处理效率。
数据处理作业包括数据包的名称和与数据包的数据处理过程中各个步骤相对应的方法属性。每一个作业都可以顺序定义设置(Setup)、提取(Extract)、转换(Transform)、装载(Load)和拆卸(Teardown)这五个方法属性中的前几个方法属性,对应各个方法属性的表现形式可如下所示:
Sub method_name:Setup(qw(task_name1,…))
Sub method_name:Extract(qw(task_name1,…))
Sub method_name:Transfor(qw(task_name1,…))
Sub method_name:Load(qw(task_name1,…))
Sub method_name:Teardown(qw(task_name1,…))
其中,method_name是一个Perl名称,只需要符合Perl语言方法命名规则即可;Setup是方法属性,表示该Setup方法将在数据处理过程中第一步调用,其它的属性类似;qw(task_name1,…)是属性的值(也是作业的名称),表示该方法属于哪些作业。一般,不推荐让一个方法属于多个不同的任务(不同的作业),因为若一个方法属于多个不同的任务会使整个作业逻辑变得复杂。因此,在本发明中,优选地,使一个方法只属于一个作业。
例如,可以将上述例子中的名称为task1的数据包的作业定义为:
Task1:
-sub step1:Setup(task1)()
-sub step2:Extract(task1)()
-sub step3:Transform(task1)()
-sub step4:Load(task1)()
-sub step5:Teardown(task1)()
通过这样的定义,系统能统计有哪些作业需要运行及与该作业所要执行数据处理过程相关联的方法。
如图5所示,处理模块43主要包括任务分析器、任务分发器和管道三个部分。
任务分析器,用于分析并检查所定义的的各个数据处理作业(可简称“作业”)的语法和语义。
任务分析器是基于PERL语言的方法属性处理器(Perl Attribute Handler)实现。PERL语言的方法属性处理器能在编译过程中BEGIN、CHECK、INIT和END中的某一阶段触发,从而实现在系统编译期对用户定义的作业进行分析。
在任务分析器中,定义了五种PERL语言方法属性的语法,分别为:
Sub Setup:ATTR(CODE){};
Sub Extract:ATTR(CODE){};
Sub Transfor:ATTR(CODE){};
Sub Load:ATTR(CODE){};
Sub Teardown:ATTR(CODE){};
任务分析器通过上述定义的语法对各个数据处理作业进行语法检查,若作业与上述定义的语法一致,则判断该作业的语法是正确的,否则,判断结果为该作业的语法是错误的。
任务分发器收集所有语法正确的作业,根据各个作业中的数据包的名称,将语法正确的各个作业分发到不同的管道中去执行。各个管道同时根据各个作业中的方法属性,调用相应的方法对该数据包中的数据进行处理。
需要说明的是,各个管道为预先设定的针对各个数据包的数据处理过程的调用方法的函数,预先设定的管道的数量与将待处理的数据划分后的数据包的数量相同。
每个管道可以在当前的一个线程中运行,也可以在另一个主机上的一个独立进程中运行。这样可以提高整体数据的数据处理效率,且不同任务之间互不干扰,在去掉一个已有作业或增加一个新的作业时都不会影响到其它正常作业的运行,实现了可扩展性。
对于任一个作业来说,将其放入至与其关联的管道中运行,这相当于将作业当作插件插入至本系统中,即使新的作业有语法、功能等错误,也不会影响到它的运行。也可以指定只运行某些作业,这相当于把另外一些不需要处理的作业当作插件从本系统中卸载掉,从而使得本系统具有高扩展性。
另外,在本系统中,还可以采用Log4perl模块输出每个管道的每一步运行日志,并在此基础上实现了基于日志分析的监控系统。从而能够实时监控线上系统运行情况,例如系统中的每一个作业所花费的时间等。
下面以一个示例来进一步说明本发明的优点和特征。
示例
现有某系统十小时的日志数据,每个小时的数据存储在一个压缩包内,每个压缩包大约900M(共十个压缩包),每个压缩包有一千一百万条记录,以二进制文本存储。每个记录以object_id,object_type,interval_start为主键现需要将object_type特定值的数据加载到数据库中。现根据需求设计每个数据包的数据处理过程包括以下步骤:
(1)Setup步骤:主要负责处理执行传统ETL步聚前需要做的初始化操作,如建立数据库表、对数据库表进行分区、准备源数据等。由于数据量较大,因此可以将数据按时间(interval_start)加以分区,譬如:一个小时一个分区。数据的分区对应于数据库中表的分区,这样做的目的是既可以避免数据的重复处理,又可以加速数据的加载过程和查询操作,数据库表分区定义为:
(2)Extract步骤:主要负责将异构数据源如二进制文件、数据库表等抽取出来,统一文本方式存储,便于后继步聚的合并、清洗、分类、分拣和列检索等操作。抽取的方法通常依赖于源数据的具体结构,这里为上述二进制文件设计了单独的抽取工具。只需要在该过程中调用该工具即可,该工具将抽取出来的数据以CSV文本格式存储。
(3)Transform步骤:主要负责将抽取出来的数据进行合并、清洗、分类、分拣和列检索等处理,形成最终能直接加载到目标数据库的文本文件。这一步中既可以编写具体系统相关的高效转换工具,也可以用已有的文本处理工具sed、awk、grep(其实这些工具已相当高效)等来分析抽取出来的CSV文本文件。这里采用awk进行数据转换,如过滤掉object_type为”test”的记录并统计与上一个小时除主键外的其它域发生变化的object个数,其中第一、二、三个域为记录主键。
awk-F,ARGIND==1{\
key=$1","$2","$3;f1[key]=$4;f2[key]=$5;f3[key]=
$6;f4[key]=$7;f5[key]=$8;f6[key]=$9;}\
ARGIND>1&&($2!=“test”){
if(f1[key2]!=$4||f2[key2]!=$5||f3[key2]!=$6
||f4[key2]!=$7||f5[key2]!=$8||
f6[key2]!=$9){shifts++}}
END{print$0","shifts}file1 file2
(4)Load步骤:直接将转换后的数据文件加载到相应数据库中即可。在加载过程中,由于多数SQL语句效率不高,因此应尽量避免SQL语句操作。由于本系统的转换后得到的数据文件跟数据库中的表是一一对应的,因此可以用Mysql的内建函数loaddata来加载数据文件,实验表明这样的加载方法是最高效的,比INSERT语句快二十倍:
LOAD DATA‘file_name’
INTO TABLE tab_name
FIELDS TERMINATED BY′,′ENCLOSED BY″″
LINES TERMINATED BY‘\n’
(5)Teardown步骤:负责处理后续事宜,如删除无用文本文件、生成一些统计信息表以方便用户查询等。
从以上作业的示例可以看出,在本系统中只需定义上述几个步骤对应的方法即可,每个步骤对应的方法实现相当灵活,可以借助已有的sed、awk和grep等高效的文本处理工具,这大大减少了设计作业的工作量。
为了测试本系统的性能,分别用本系统和开源工具KETTLE对上述十小时的日志数据进行数据处理:
采用本系统运行作业十次,每次加载一个小时的数据,每小时数据有一千一百万条记录,运行任务过程中记录每一步所花费的时间,实验结果如图6所示。
分别用开源工具KETTLE和本系统(假设称为SETL)运行作业十次,每次加载一个小时数据,每小时数据有一千一百万条记录,记录该十个作业分别在Kettle和本系统中运行所需时间,实验结果如图7所示。
从图6可以看出本系统具有较高效率,一千多万条数据加载在80秒内便能处理完毕,且大部分时间花费在数据转换这一步,这一步是由转换规则的复杂性决定的;从图7的对比可以看出,本系统比开源工具Kettle具有更高的执行效率。
本实施例的数据处理系统,通过任务分发器将各个数据包的数据处理作业分发至不同的管道中独立地执行,使得能够在各个管道中并行执行各个数据包的数据处理,节省了大量的时间;而且,各个数据包的数据处理过程可以根据用户的需要进行设定,对于不太重要的数据可以不进行,使得本系统具有高扩展性。
本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (10)
1.一种数据处理方法,其特征在于,包括:
步骤一,将待处理的数据划分为多个数据包;
步骤二,对部分或全部数据包设定各自的数据处理过程;
步骤三,根据各个设定的数据处理过程,同时分别对各个数据包中的数据进行处理。
2.根据权利要求1所述的数据处理方法,其特征在于,在所述步骤一中,
根据设定模式将待处理的数据划分为多个数据包,其中,
所述设定模式为按时间划分或按数据大小划分。
3.根据权利要求1所述的数据处理方法,其特征在于,所述步骤二进一步包括:
将所述各个设定的数据处理过程分别定义为各个数据处理作业,其中,
所述数据处理作业包括数据包的名称和与所述数据包的数据处理过程中所包含的各步骤相对应的方法属性。
4.根据权利要求3所述的数据处理方法,其特征在于,在所述步骤三中,具体包括以下步骤:
分析并检查所述各个数据处理作业的语法;
根据所述数据处理作业中数据包的名称,将语法正确的各个数据处理作业分发至与所述名称相关联的各个管道中;
所述各个管道同时根据各个作业中的方法属性,调用相应的方法对该数据包中的数据进行处理,其中,
所述各个管道为预先设定的针对各个数据包的数据处理过程的调用方法的函数,预先设定的管道的数量与将待处理的数据划分后的数据包的数量相同。
5.根据权利要求4所述的数据处理方法,其特征在于,所述数据处理过程设定为按照以下顺序进行操作的前设定个步骤:
第一步进行设置步骤,该设置步骤执行在对数据处理之前的初始化处理,其中,所述初始化处理包括建立数据库表,并根据所述各个数据包的数量对所述数据库表进行分区的操作;
第二步进行抽取步骤,该抽取步骤将元数据抽取出来;
第三步进行转换步骤,该转换步骤将抽取出来的元数据进行合并、清洗、分类、分拣和列检索处理;
第四步进行装载步骤,该装载步骤将执行完所述转换步骤后的数据加载至相应数据库中;
第五步进行拆卸步骤,该拆卸步骤处理后续操作,所述后续操作包括删除文件和生成统计信息表。
6.根据权利要求3至5中任一项所述的数据处理方法,其特征在于,
采用插件的方式来设计各个数据处理作业。
7.根据权利要求4或5所述的数据处理方法,其特征在于,
所述管道在当前主机的一个线程中运行或在另一个主机的独立的进程中运行。
8.根据权利要求7所述的数据处理方法,其特征在于,还包括:
利用PERL语言中的Log4perl模块,对所述管道调用相应的方法对该数据包中的数据进行处理的过程进行监控。
9.一种数据处理系统,其特征在于,包括:
划分模块,将待处理的数据划分为多个数据包;
设定模块,对部分或全部数据包设定各自的数据处理过程;
处理模块,根据各个设定的数据处理过程,同时分别对各个数据包中的数据进行处理。
10.根据权利要求9所述的数据处理系统,其特征在于,所述设定模块进一步执行:
将所述各个设定的数据处理过程分别定义为各个数据处理作业,其中,
所述数据处理作业包括数据包的名称和与所述数据包的数据处理过程中所包含的各步骤相对应的方法属性;
在所述处理模块进一步包括:
任务分析器,其分析并检查所述各个数据处理作业的语法;
任务分发器,根据所述数据处理作业中数据包的名称,将语法正确的各个数据处理作业分发至与所述名称相关联的各个管道中;
所述各个管道,同时根据各个作业中的方法属性,调用相应的方法对该数据包中的数据进行处理,其中,
所述各个管道为预先设定的针对各个数据包的数据处理过程的调用方法的函数,预先设定的管道的数量与将待处理的数据划分后的数据包的数量相同。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210568419.8A CN103077192B (zh) | 2012-12-24 | 2012-12-24 | 一种数据处理方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210568419.8A CN103077192B (zh) | 2012-12-24 | 2012-12-24 | 一种数据处理方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103077192A true CN103077192A (zh) | 2013-05-01 |
CN103077192B CN103077192B (zh) | 2016-09-21 |
Family
ID=48153722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210568419.8A Active CN103077192B (zh) | 2012-12-24 | 2012-12-24 | 一种数据处理方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103077192B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104933098A (zh) * | 2015-05-28 | 2015-09-23 | 浪潮软件集团有限公司 | 一种基于消除重复记录的数据清洗平台设计方法 |
CN105553611A (zh) * | 2015-12-09 | 2016-05-04 | 豪威科技(上海)有限公司 | 数据包解码系统及方法 |
CN107291776A (zh) * | 2016-04-11 | 2017-10-24 | 北京京东尚科信息技术有限公司 | 流式数据处理方法和装置 |
WO2018036336A1 (zh) * | 2016-08-22 | 2018-03-01 | 中兴通讯股份有限公司 | 一种数据处理方法和装置 |
CN107784039A (zh) * | 2016-08-31 | 2018-03-09 | 阿里巴巴集团控股有限公司 | 一种数据加载方法、装置及系统 |
CN107807956A (zh) * | 2017-09-30 | 2018-03-16 | 平安科技(深圳)有限公司 | 电子装置、数据处理方法及计算机可读存储介质 |
CN109685391A (zh) * | 2019-01-09 | 2019-04-26 | 郭磊 | 一种多模态融合的智能网络平台及其实现方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6473782B1 (en) * | 1998-10-14 | 2002-10-29 | International Business Machines Corporation | Method and apparatus for transfer information using optical fiber connections |
CN101017546A (zh) * | 2007-03-12 | 2007-08-15 | 中国建设银行股份有限公司 | 一种用于可分类数据批处理的方法及装置 |
CN101853179A (zh) * | 2010-05-10 | 2010-10-06 | 深圳市极限网络科技有限公司 | 基于插件执行任务分解的通用分布式动态运算技术 |
-
2012
- 2012-12-24 CN CN201210568419.8A patent/CN103077192B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6473782B1 (en) * | 1998-10-14 | 2002-10-29 | International Business Machines Corporation | Method and apparatus for transfer information using optical fiber connections |
CN101017546A (zh) * | 2007-03-12 | 2007-08-15 | 中国建设银行股份有限公司 | 一种用于可分类数据批处理的方法及装置 |
CN101853179A (zh) * | 2010-05-10 | 2010-10-06 | 深圳市极限网络科技有限公司 | 基于插件执行任务分解的通用分布式动态运算技术 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104933098A (zh) * | 2015-05-28 | 2015-09-23 | 浪潮软件集团有限公司 | 一种基于消除重复记录的数据清洗平台设计方法 |
CN105553611A (zh) * | 2015-12-09 | 2016-05-04 | 豪威科技(上海)有限公司 | 数据包解码系统及方法 |
CN105553611B (zh) * | 2015-12-09 | 2018-12-11 | 豪威科技(上海)有限公司 | 数据包解码系统及方法 |
CN107291776A (zh) * | 2016-04-11 | 2017-10-24 | 北京京东尚科信息技术有限公司 | 流式数据处理方法和装置 |
WO2018036336A1 (zh) * | 2016-08-22 | 2018-03-01 | 中兴通讯股份有限公司 | 一种数据处理方法和装置 |
CN107784039A (zh) * | 2016-08-31 | 2018-03-09 | 阿里巴巴集团控股有限公司 | 一种数据加载方法、装置及系统 |
CN107807956A (zh) * | 2017-09-30 | 2018-03-16 | 平安科技(深圳)有限公司 | 电子装置、数据处理方法及计算机可读存储介质 |
WO2019061667A1 (zh) * | 2017-09-30 | 2019-04-04 | 平安科技(深圳)有限公司 | 电子装置、数据处理方法、系统及计算机可读存储介质 |
CN109685391A (zh) * | 2019-01-09 | 2019-04-26 | 郭磊 | 一种多模态融合的智能网络平台及其实现方法 |
CN109685391B (zh) * | 2019-01-09 | 2020-11-24 | 郭磊 | 一种多模态融合的智能网络平台及其实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103077192B (zh) | 2016-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11620117B2 (en) | Systems and methods for code clustering analysis and transformation | |
US11188319B2 (en) | Systems and methods for entry point-based code analysis and transformation | |
US11436006B2 (en) | Systems and methods for code analysis heat map interfaces | |
Ali et al. | From conceptual design to performance optimization of ETL workflows: current state of research and open problems | |
US9659073B2 (en) | Techniques to extract and flatten hierarchies | |
JP5298117B2 (ja) | 分散コンピューティングにおけるデータマージング | |
CN103077192A (zh) | 一种数据处理方法及其系统 | |
CN107885499A (zh) | 一种接口文档生成方法及终端设备 | |
WO2016049307A1 (en) | Method and system for implementing efficient classification and exploration of data | |
EP3198478A1 (en) | Method and system for implementing efficient classification and exploration of data | |
CN102426582A (zh) | 数据操作管理装置和数据操作管理方法 | |
US7765219B2 (en) | Sort digits as number collation in server | |
Bala et al. | A Fine‐Grained Distribution Approach for ETL Processes in Big Data Environments | |
CN108829505A (zh) | 一种分布式调度系统及方法 | |
Sinthong et al. | Aframe: Extending dataframes for large-scale modern data analysis | |
US20170300461A1 (en) | Representation of an Interactive Document as a Graph of Entities | |
CN102446167A (zh) | 一种基于逻辑模板对复杂字符串逻辑处理的方法和装置 | |
CN112115113B (zh) | 数据存储系统、方法、装置、设备以及存储介质 | |
De Alwis et al. | Remodularization analysis for microservice discovery using syntactic and semantic clustering | |
EP2343658A1 (en) | Federation as a process | |
Sinthong et al. | AFrame: Extending DataFrames for large-scale modern data analysis (Extended Version) | |
CN109033196A (zh) | 一种分布式数据调度系统及方法 | |
CN111221698A (zh) | 任务数据采集方法与装置 | |
CN113687827A (zh) | 基于微件的数据列表生成方法、装置、设备及存储介质 | |
JP6763967B2 (ja) | データ変換装置とデータ変換方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |