CN108304538A - 一种完全基于分布式内存计算的etl系统及其方法 - Google Patents

一种完全基于分布式内存计算的etl系统及其方法 Download PDF

Info

Publication number
CN108304538A
CN108304538A CN201810090048.4A CN201810090048A CN108304538A CN 108304538 A CN108304538 A CN 108304538A CN 201810090048 A CN201810090048 A CN 201810090048A CN 108304538 A CN108304538 A CN 108304538A
Authority
CN
China
Prior art keywords
data
module
etl
spark
distributed
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
Application number
CN201810090048.4A
Other languages
English (en)
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.)
Guangdong Strong Wind Polytron Technologies Inc
Original Assignee
Guangdong Strong Wind Polytron Technologies Inc
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 Guangdong Strong Wind Polytron Technologies Inc filed Critical Guangdong Strong Wind Polytron Technologies Inc
Priority to CN201810090048.4A priority Critical patent/CN108304538A/zh
Publication of CN108304538A publication Critical patent/CN108304538A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • 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/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • 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
    • G06F16/2445Data retrieval commands; View definitions
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses

Landscapes

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

Abstract

一种完全基于分布式内存计算的ETL系统,本系统包括数据抽取模块、数据处理模块、数据整合模块、数据输出模块、元数据管理模块5大功能模块和一个ETL作业流程引擎;元数据管理模块,并输出元数据控制文件供ETL作业流程引擎使用;ETL作业流程引擎,读取元数据控制文件,计算各节点所处的层数,并将各作业节点按层数进行分层;ETL作业流程引擎按照由低层到高层的执行路径依次运行各层的ETL作业,最终完成ETL作业流程图中所有ETL作业的执行。本系统基于Spark和Alluxio技术,提高了系统架构的弹性,简化了数据管理,提升了数据加工性能。

Description

一种完全基于分布式内存计算的ETL系统及其方法
技术领域
本申请涉及一种ETL系统,具体地,属于一种完全基于分布式内存计算的ETL系统及其方法。
背景技术
数据的爆发性增长和大数据应用的发展,给ETL(数据抽取、转换和加载)软件提供了前所未有的发展机会。传统的ETL软件大多基于单机架构,在处理海量数据时,IO吞吐量、系统资源存在瓶颈,扩展困难且价格昂贵。随着分布式技术的出现,新一代基于Hadoop和Spark的ETL软件,以Hadoop分布式文件存储系统HDFS为存储层,以分布式内存计算框架Spark为计算层,利用先进的DAG执行引擎和性能强大的基于内存的多轮迭代计算技术,对海量数据进行深度加工,在性能上比单机的传统架构,比分布式计算架构MapReduce有了数倍的提升。但Hadoop+Spark的架构存在诸多不足,1、Spark在内存申请的逻辑上,存在明显缺陷,体现在内存不足时无法释放,只能启动自杀的方式来结束任务。内存消费者在内存不足时不能要求另外的内存消费者释放,只能通过把数据写到磁盘的方式来释放,当数据数量级规模的增长,性能急剧下降。2、Hadoop + Spark架构依赖于Hadoop的HDFS作为存储系统,不能支持更多的分布式存储系统,架构弹性和灵活性不足。
发明内容
本发明为克服上述现有技术所述的至少一种缺陷,提供一种完全基于分布式内存计算的ETL系统及其方法。
本发明旨在至少在一定程度上解决上述技术问题。
本发明的首要目的是解决技术问题:如何克服Hadoop + Spark架构的技术缺陷。
本申请提供一种完全基于分布式内存计算的ETL系统,本系统包括数据抽取模块、数据处理模块、数据整合模块、数据输出模块、元数据管理模块5大功能模块和一个ETL作业流程引擎;其中,数据抽取模块抽取源数据,并根据数据分块规则在分布节点上动态生成多个Spark DataFrame,再通过线程池启动多个线程来调用数据处理模块对每个SparkDataFrame进行并行处理;数据处理模块,读取数据抽取模块生成的Spark DataFrame,经过元数据匹配检查和数据转换,得到中转数据;数据整合模块,对当天的中转数据和上一天的整合数据进行全量数据整合或历史数据整合,得到整合数据;数据输出模块,根据数据应用系统对数据格式的要求,对当天整合数据进行格式转换并输出;元数据管理模块,将系统各种要素进行参数化定义和管理,并输出元数据控制文件供ETL作业流程引擎使用;ETL作业流程引擎,读取元数据控制文件,采用广度优先搜索算法对元数据定义的ETL作业流程图进行解析,根据各节点的依赖关系,计算各节点所处的层数,并将各作业节点按层数进行分层;ETL作业流程引擎按照由低层到高层的执行路径依次运行各层的ETL作业,最终完成ETL作业流程图中所有ETL作业的执行。
进一步的,数据抽取模块包括数据接入模块和第一分布式数据集生成模块。
进一步的,数据接入模块是接口层,是本系统连接数据源的统一数据通道,通过该通道能够高并发、高可靠地抽取源数据;数据接入模块支持离线抽取和在线抽取两种数据抽取方式; 第一分布式数据集生成模块通过数据接入模块读取源数据,并根据数据分块规则在分布节点上动态生成多个Spark DataFrame,待数据处理模块进一步处理。
进一步的,数据处理模块包括数据检查模块和数据转换模块。
进一步的,数据检查模块是通过元数据匹配对数据进行检查并生成检查报告; 数据转换模块是在数据检查之后,紧接着进行数据的清理和转换,功能包括:编码转换、数据格式化、增加字段、按表达式转换。
进一步的,数据整合模块包括第二分布式数据集生成模块、全量数据整合模块和历史数据整合模块。
进一步的,第二分布式数据集生成模块分别读取当天的中转数据和上一天的整合数据,在分布式节点上生成对应的Spark DataFrame;全量数据整合模块读取当天的中转数据Spark DataFrame,根据中转数据中的增、删、改标识,相应对上一天的整合数据SparkDataFrame中相同健值的数据进行增、删、改操作,其中删除只做逻辑删除,删除标识置为‘1’;处理完成后,得到最新全量数据;历史数据整合模块读取当天的中转数据SparkDataFrame,根据中转数据中的增、删、改标识,对上一天的整合数据Spark DataFrame中相同健值的数据做相应处理,删标识的,给数据的删除标识置为‘1’,失效日期置为源数据日期的前一天;增标识的,新增一条数据,生效日期置为源数据日期,失效日期置为‘9999-01-01’;改标识的,修改最近一条数据内容,失效日期置为源数据日期的前一天,并新增一条数据,生效日期置为源数据日期,失效日期置为‘9999-01-01’;处理完成后,得到最新历史数据。
进一步的,数据输出模块包括第三分布式数据集生成模块和目标数据输出模块。
进一步的,第三分布式数据集生成模块读取当天的整合数据,在分布式节点上生成对应的Spark DataFrame;目标数据输出模块读取分布式数据集生成模块生成的SparkDataFrame,根据数据应用系统对数据格式的要求,对当天整合后数据进行格式转换并输出。
进一步的,本申请提供一种使用前述的ETL系统的完全基于分布式内存计算的ETL方法,以standalone模式运行Spark和Alluxio,采用Alluxio构建基础支撑和存储平台,Alluxio支持以内存或者本地存储来存储数据;采用Spark核心组件构建数据加工框架,利用Spark的DAG执行引擎及基于内存的多轮迭代计算技术,对源数据进行深度加工;ETL系统采用Scala编程,Scala是运行在JVM之上的面向对象的静态函数式编程语言,Spark内核是由Scala语言开发的;采用Alluxio高效存储Spark DataFrame来支撑Spark整个数据加工和计算过程,使大数据ETL作业在内存中完成,性能达到内存级别;通过Spark DataFramewrite API将DataFrame作为一个文件写入Alluxio,使用f.write.parquet()将DataFrame写成parquet文件并存入Alluxio后,然后在Spark中使用sqlContext.read.parquet()读取数据。
与现有技术相比,本申请具有以下优点:
1、元数据管理,简单易用,维护方便
采用简单易用的Excel表管理和配置;元数据变更直接在Excel表里进行维护,一目了然 。
2、无需编程,开箱即用,自动运行
快速部署,开箱即用,成熟完备的ETL工具箱,涵盖常用的银行数据ETL需求;元数据一旦设置完成,系统自动流水线式运行数据抽取、数据处理、数据整合、数据输出等模块,无需人工干预。源数据变更,只需修改相应的元数据,无需编程。
3、内存计算,性能提升数倍,线性拓展
Spark和Alluxio的完美结合,提高了系统架构的弹性,简化了数据管理,提升了数据加工性能,本系统较传统单机架构的ETL产品、Hadoop MapReduce以及Hadoop+Spark架构,运行速度有数倍的提升。
附图说明
图1为系统逻辑结构框图。
图2为数据抽取示意图。
图3为数据处理(一个线程)示意图。
图4为数据整合示意图。
图5为数据输出示意图。
图6为元数据管理示意图。
图7为元数据定义示意图。
附图仅用于示例性说明,不能理解为对本专利的限制;为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的;相同或相似的标号对应相同或相似的部件;附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制。
具体实施方式
下面结合附图和实施例对本发明的技术方案做进一步的说明。
实施例1
完全基于分布式内存计算的ETL系统,是建立在以内存为中心的虚拟的分布式存储系统和分布式内存并行计算技术的一种ETL产品。本系统以standalone模式运行Spark和Alluxio,采用Alluxio构建基础支撑和存储平台,Alluxio支持以内存或者本地存储如SSD和HDD来存储数据;采用Spark核心组件构建数据加工框架,利用Spark先进的DAG执行引擎及性能强大的基于内存的多轮迭代计算技术,对源数据进行深度加工。
本系统采用Scala编程,Scala是运行在JVM之上的面向对象的静态函数式编程语言,具有速度快、简洁API、易于和Alluxio、YARN集成等特点。Spark内核是由Scala语言开发的,本系统与Spark完美结合,直达Spark内核,提高了编程效率和大数据处理性能,同时保证了系统的高容错性和高可伸缩性。
本系统采用Alluxio高效存储Spark DataFrame来支撑Spark整个数据加工和计算过程,使大数据ETL作业在内存中完成,性能达到内存级别。我们通过Spark DataFramewrite API将DataFrame作为一个文件写入Alluxio,使用df.write.parquet()将DataFrame写成parquet文件并存入Alluxio后,然后在Spark中使用sqlContext.read.parquet()读取数据。
本系统主体上包括数据抽取、数据处理、数据整合、数据输出、元数据管理5大功能模块和一个ETL作业流程引擎。
数据抽取模块,支持分布式数据库、结构化数据文件(可压缩)、分布式文件系统(如HDFS、GlusterFS、MapR-FS、GCS、S3、Swift、Ceph、NFS)、Alluxio文件等多种异构数据源。数据抽取模块抽取源数据,并根据数据分块规则在分布节点上动态生成多个SparkDataFrame,再通过线程池启动多个线程来调用数据处理模块对每个Spark DataFrame进行并行处理。
数据处理模块,读取数据抽取模块生成的Spark DataFrame,经过元数据匹配检查和一系列数据转换,得到处理后数据,我们称之为中转数据。
数据整合模块,对当天的中转数据和上一天的整合数据进行全量数据整合或历史数据整合,得到当天整合后数据,我们称之为整合数据。
数据输出模块,根据数据应用系统对数据格式的要求,对当天整合后数据进行格式转换并输出。数据输出格式包括分布式数据库、结构化数据文件(可压缩)、分布式文件系统(如HDFS、GlusterFS、MapR-FS、GCS、S3、Swift、Ceph、NFS)、Alluxio文件等。
元数据管理模块,将系统各种要素如数据源信息、源数据结构、目标数据格式、目标数据结构、数据转换规则及表达式、ETL作业调度策略等进行参数化定义和管理,并输出元数据控制文件供ETL作业流程引擎使用。元数据控制文件采用XML文件保存元数据,使元数据管理变得简单和通用。元数据一旦设置完成,系统自动流水线式运行数据抽取、数据处理、数据整合、数据输出等模块,无需人工干预。源数据变更,只需修改相应的元数据,无需再编程。
本系统具有独特的设计理念,以元数据定义和管理ETL的各种要素;采用Scala编程语言完美结合Spark;利用Alluxio分布式内存文件系统和Spark分布式内存并行计算框架,在内存中完成数据ETL过程,减少磁盘I/O;采用多线程并发运行处理作业提高ETL的性能和资源利用率。本系统较传统单机架构的ETL产品、Hadoop MapReduce以及Hadoop+Spark架构,运行速度有数倍的提升。
数据抽取模块支持抽取各种异构数据源,并根据数据分块规则将抽取的数据在分布节点上动态生成多个Spark DataFrame。
数据抽取模块包括数据接入模块和第一分布式数据集生成模块,具体如下:
1、数据接入模块
数据接入模块是接口层,是本系统连接数据源的统一数据通道,通过该通道可以高并发、高可靠地抽取源数据。数据接入支持分布式数据库、结构化数据文件(可压缩)、分布式文件系统(如HDFS、GlusterFS、MapR-FS、GCS、S3、Swift、Ceph、NFS)、Alluxio文件等多种异构数据源。
数据接入模块支持离线抽取和在线抽取两种数据抽取方式,离线抽取方式是指源系统生成数据文件,压缩之后通过文件传输软件(如FTP)传送到本系统,再通过数据接入加载到本系统;在线采集方式是指通过数据接入在线实时抽取源数据到本系统。
数据接入模块支持直接读取压缩格式的数据文件,并进行后续处理,整个过程数据缓存在内存不写磁盘,较以往先解压缩文件然后再读取数据文件的传统做法,在速度上有显著的提升,同时也减少了数据文件的网络传输。
、第一分布式数据集生成模块
第一分布式数据集生成模块通过数据接入模块读取源数据,并根据数据分块规则在分布节点上动态生成多个Spark DataFrame,待数据处理模块进一步处理。数据分块规则的基本原理是根据数据总量大小和数据记录大小进行动态计算,得到Spark DataFrame的个数,并按规则将数据加载到各个Spark DataFrame中。数据分块规则解决了Spark基于缺省参数HDFS Block大小生成Spark DataFrame的不足,让单条数据记录完整地不被分割地分配到同一个Spark DataFrame中,从而减少跨Spark DataFrame计算,提高了数据处理的性能。
数据处理模块读取数据抽取模块生成的Spark DataFrame,经过元数据匹配检查和一系列数据转换,得到处理后数据,我们称之为中转数据。
数据处理模块包括数据检查模块和数据转换模块,具体如下:
1、数据检查模块
数据检查模块是通过元数据匹配对数据进行检查并生成检查报告。数据检查报告提供给数据管理员了解源数据质量,也可以提供源系统的系统管理员参考。
1)、元数据匹配检查。该项功能是根据预先定义的元数据对读取的数据进行检查,包括数据字段的数量、字段数据类型、字段长度、字段数据格式、是否符合业务校验表达式等方面的检查。
2)、检查结果输出。检查完成后输出检查报告,记录有问题的数据和时间,以及总体的检查情况,如全部数据多少条,其中有问题的数据多少条等。
、数据转换模块
数据检查之后,紧接着进行数据的清理和转换,功能包括:编码转换、数据格式化、增加字段、按表达式转换等。
1)、编码转换。支持GBK、UTF-16、ANSI编码转换为UTF-8编码。
2)、数据格式化。根据元数据定义的数据格式转换要求,转换为目标格式。如日期,格式为MMDDYYYY转换为YYYY-MM-DD。
3)、增加字段。根据元数据定义的新增字段要求,生成新字段。新增字段的值是固定值,或者是由其它字段组合或计算得到,如新增年龄字段,它的值由出生日期字段值计算得到。
4)、按表达式转换。数据转换功能调用表达式引擎,对元数据定义的表达式进行解析,并按解析后的表达式进行数据转换。表达式支持TRIM、SUBSTRING、CONCAT、REPLACE、IF-ELSE-FI 判断逻辑、基础数学运算、正则表达操作函数等。
数据整合模块,对当天的中转数据和上一天的整合数据根据数据处理流程要求进行全量数据整合或历史数据整合,得到当天整合后数据,我们称之为整合数据。
数据整合模块包括第二分布式数据集生成模块、全量数据整合模块和历史数据整合模块,具体如下:
1、第二分布式数据集生成模块
第二分布式数据集生成模块分别读取当天的中转数据和上一天的整合数据,在分布式节点上生成对应的Spark DataFrame。
、全量数据整合模块
读取当天的中转数据Spark DataFrame,根据中转数据中的增、删、改标识,相应对上一天的整合数据Spark DataFrame中相同健值的数据进行增、删、改操作,其中删除只做逻辑删除,删除标识置为’1’。处理完成后,得到最新全量数据。
、历史数据整合模块
读取当天的中转数据Spark DataFrame,根据中转数据中的增、删、改标识,对上一天的整合数据Spark DataFrame中相同健值的数据做相应处理。删标识的,给数据的删除标识置为’1’,失效日期置为源数据日期的前一天;增标识的,新增一条数据,生效日期置为源数据日期,失效日期置为’9999-01-01’;改标识的,修改最近一条数据内容,失效日期置为源数据日期的前一天,并新增一条数据,生效日期置为源数据日期,失效日期置为’9999-01-01’。处理完成后,得到最新历史数据。
(四)、数据输出模块
数据输出模块包括第三分布式数据集生成模块和目标数据输出模块,具体如下:
1、第三分布式数据集生成模块
读取当天的整合数据,在分布式节点上生成对应的Spark DataFrame。
、目标数据输出模块
读取第三分布式数据集生成模块生成的Spark DataFrame,根据数据应用系统对数据格式的要求,对当天整合后数据进行格式转换并输出。数据输出格式支持分布式数据库、结构化数据文件(可压缩)、分布式文件系统(如HDFS、GlusterFS、MapR-FS、GCS、S3、Swift、Ceph、NFS)、Alluxio文件等。
(五)、元数据管理模块
元数据管理模块,将系统各种要素如源数据结构、目标数据结构、数据转换规则、处理环节及处理流程等进行参数化定义和管理。元数据一旦设置完成,系统自动流水线式运行数据抽取、数据处理、数据整合、数据输出等模块,无需人工干预。源数据变更,只需修改相应的元数据,无需编程。
元数据管理模块包括元数据定义模块、元数据检查模块、元数据导出模块,具体如下:
1、元数据定义模块
使用Excel直接进行元数据定义和维护,简单易用,一目了然。元数据包括:数据源信息、源数据结构、目标数据格式、目标数据结构、数据转换规则和表达式等。
、元数据检查模块
根据一系列的元数据规范对元数据进行检查,并输出元数据检查报告。
、元数据导出模块
将Excel中的元数据导出为元数据控制文件。元数据控制文件采用XML文件保存元数据,使元数据管理变得简单和通用。
(六)、ETL作业流程引擎
ETL作业流程引擎,读取元数据控制文件,采用广度优先搜索算法对元数据定义的ETL作业流程图进行解析,根据各节点的依赖关系,计算各节点所处的层数,并将各作业节点按层数进行分层;ETL作业流程引擎按照由低层到高层的执行路径依次运行各层的ETL作业,最终完成ETL作业流程图中所有ETL作业的执行
本发明的完全基于分布式内存计算的ETL系统,是建立在Alluxio分布式内存文件存储系统和Spark分布式内存并行计算框架的一种ETL产品,较好地克服了Hadoop + Spark架构的技术缺陷,具有如下优点:
1、具有更高的性能:Alluxio是以内存为中心的虚拟的分布式存储系统,通过从本地节点的内存而不是磁盘提供数据来加速性能,还可以将热点数据缓存在内存中来减少节点间的网络开销。
2、具有更富弹性的架构:Alluxio部署在底层分布式文件系统和上层分布式计算框架的中间层,对上层应用来讲,Alluxio是一个管理数据访问和快速存储的中间层,对底层存储而言,Alluxio消除了大数据业务和存储系统依赖和鸿沟,隐藏底层存储的差异,以文件形式在内存或其它存储系统中提供数据的存取服务。采用Alluxio,现有的数据不需要进行迁移,上层的计算作业仍然能够通过Alluxio访问底层存储平台上的数据。Alluxio支持包括HDFS、GlusterFS、MapR-FS、GCS、S3、Swift、Ceph、NFS等多种底层分布式文件系统。
3、可以设计更优的ETL作业调度策略:我们可以结合Alluxio的特点和源数据的特点来设计ETL作业调度策略,将热点数据预先显式加载到内存,以加速访问这些热点数据的ETL作业。我们通过元数据来体现基于Alluxio的ETL作业调度策略,实现针对不同数据源的数据加工任务的定制设计和运行。
本系统充分满足各行业特别是企业在大数据ETL方面的需要。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

Claims (10)

1.一种完全基于分布式内存计算的ETL系统,其特征在于:本系统包括数据抽取模块、数据处理模块、数据整合模块、数据输出模块、元数据管理模块5大功能模块和一个ETL作业流程引擎;其中,数据抽取模块抽取源数据,并根据数据分块规则在分布节点上动态生成多个Spark DataFrame,再通过线程池启动多个线程来调用数据处理模块对每个SparkDataFrame进行并行处理;数据处理模块,读取数据抽取模块生成的Spark DataFrame,经过元数据匹配检查和数据转换,得到中转数据;数据整合模块,对当天的中转数据和上一天的整合数据进行全量数据整合或历史数据整合,得到整合数据;数据输出模块,根据数据应用系统对数据格式的要求,对当天整合数据进行格式转换并输出;元数据管理模块,将系统各种要素进行参数化定义和管理,并输出元数据控制文件供ETL作业流程引擎使用;ETL作业流程引擎,读取元数据控制文件,采用广度优先搜索算法对元数据定义的ETL作业流程图进行解析,根据各节点的依赖关系,计算各节点所处的层数,并将各作业节点按层数进行分层;ETL作业流程引擎按照由低层到高层的执行路径依次运行各层的ETL作业,最终完成ETL作业流程图中所有ETL作业的执行。
2.根据权利要求1所述的一种完全基于分布式内存计算的ETL系统,其特征在于:数据抽取模块包括数据接入模块和第一分布式数据集生成模块。
3.根据权利要求2所述的一种完全基于分布式内存计算的ETL系统,其特征在于:数据接入模块是接口层,是本系统连接数据源的统一数据通道,通过该通道能够高并发、高可靠地抽取源数据;数据接入模块支持离线抽取和在线抽取两种数据抽取方式; 第一分布式数据集生成模块通过数据接入模块读取源数据,并根据数据分块规则在分布节点上动态生成多个Spark DataFrame,待数据处理模块进一步处理。
4.根据权利要求1所述的一种完全基于分布式内存计算的ETL系统,其特征在于:数据处理模块包括数据检查模块和数据转换模块。
5.根据权利要求4所述的一种完全基于分布式内存计算的ETL系统,其特征在于:数据检查模块是通过元数据匹配对数据进行检查并生成检查报告; 数据转换模块是在数据检查之后,紧接着进行数据的清理和转换,功能包括:编码转换、数据格式化、增加字段、按表达式转换。
6.根据权利要求1 所述的一种完全基于分布式内存计算的ETL系统,其特征在于:数据整合模块包括第二分布式数据集生成模块、全量数据整合模块和历史数据整合模块。
7.根据权利要求6所述的一种完全基于分布式内存计算的ETL系统,其特征在于:第二分布式数据集生成模块分别读取当天的中转数据和上一天的整合数据,在分布式节点上生成对应的Spark DataFrame;全量数据整合模块读取当天的中转数据Spark DataFrame,根据中转数据中的增、删、改标识,相应对上一天的整合数据Spark DataFrame中相同健值的数据进行增、删、改操作,其中删除只做逻辑删除,删除标识置为‘1’;处理完成后,得到最新全量数据;历史数据整合模块读取当天的中转数据Spark DataFrame,根据中转数据中的增、删、改标识,对上一天的整合数据Spark DataFrame中相同健值的数据做相应处理,删标识的,给数据的删除标识置为‘1’,失效日期置为源数据日期的前一天;增标识的,新增一条数据,生效日期置为源数据日期,失效日期置为‘9999-01-01’;改标识的,修改最近一条数据内容,失效日期置为源数据日期的前一天,并新增一条数据,生效日期置为源数据日期,失效日期置为‘9999-01-01’;处理完成后,得到最新历史数据。
8.根据权利要求1所述的一种完全基于分布式内存计算的ETL系统,其特征在于:数据输出模块包括第三分布式数据集生成模块和目标数据输出模块。
9.根据权利要求8 所述的一种完全基于分布式内存计算的ETL系统,其特征在于:第三分布式数据集生成模块读取当天的整合数据,在分布式节点上生成对应的SparkDataFrame;目标数据输出模块读取第三分布式数据集生成模块生成的Spark DataFrame,根据数据应用系统对数据格式的要求,对当天整合后数据进行格式转换并输出。
10.一种使用基于权利要求1-10中任一项权利要求所述的ETL系统的完全基于分布式内存计算的ETL方法,其特征在于:以standalone模式运行Spark和Alluxio,采用Alluxio构建基础支撑和存储平台,Alluxio支持以内存或者本地存储来存储数据;采用Spark核心组件构建数据加工框架,利用Spark的DAG执行引擎及基于内存的多轮迭代计算技术,对源数据进行深度加工;ETL系统采用Scala编程,Scala是运行在JVM之上的面向对象的静态函数式编程语言,Spark内核是由Scala语言开发的;采用Alluxio高效存储Spark DataFrame来支撑Spark整个数据加工和计算过程,使大数据ETL作业在内存中完成,性能达到内存级别;通过Spark DataFrame write API将DataFrame作为一个文件写入Alluxio,使用f.write.parquet()将DataFrame写成parquet文件并存入Alluxio后,然后在Spark中使用sqlContext.read.parquet()读取数据。
CN201810090048.4A 2018-01-30 2018-01-30 一种完全基于分布式内存计算的etl系统及其方法 Pending CN108304538A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810090048.4A CN108304538A (zh) 2018-01-30 2018-01-30 一种完全基于分布式内存计算的etl系统及其方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810090048.4A CN108304538A (zh) 2018-01-30 2018-01-30 一种完全基于分布式内存计算的etl系统及其方法

Publications (1)

Publication Number Publication Date
CN108304538A true CN108304538A (zh) 2018-07-20

Family

ID=62866877

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810090048.4A Pending CN108304538A (zh) 2018-01-30 2018-01-30 一种完全基于分布式内存计算的etl系统及其方法

Country Status (1)

Country Link
CN (1) CN108304538A (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109254989A (zh) * 2018-08-27 2019-01-22 北京东软望海科技有限公司 一种基于元数据驱动的弹性etl架构设计的方法及装置
CN109272159A (zh) * 2018-09-15 2019-01-25 夏琴 一种金融数据分析的平台风险控制方法
CN109284263A (zh) * 2018-09-30 2019-01-29 南方电网科学研究院有限责任公司 一种las文件的点云图浏览方法及相关装置
CN109800069A (zh) * 2018-12-25 2019-05-24 北京明略软件系统有限公司 一种实现数据治理的方法及装置
CN110059124A (zh) * 2019-04-22 2019-07-26 上海飞未信息技术有限公司 一种快速大规模影像数据分布式流水线处理方法和系统
CN110851515A (zh) * 2019-10-31 2020-02-28 武汉联图时空信息科技有限公司 一种基于Spark分布式环境下的大数据ETL模型执行方法及介质
CN111581254A (zh) * 2020-05-03 2020-08-25 上海维信荟智金融科技有限公司 基于互联网金融数据的etl方法及系统
CN112035468A (zh) * 2020-08-24 2020-12-04 杭州览众数据科技有限公司 基于内存计算、web可视化配置的多数据源ETL工具
CN112115191A (zh) * 2020-09-22 2020-12-22 南京北斗创新应用科技研究院有限公司 一种大数据etl模型执行的分支优化方法
CN112381583A (zh) * 2020-11-19 2021-02-19 深圳供电局有限公司 一种基于分布式内存计算技术的电力量费计算方法及装置
CN113064870A (zh) * 2021-03-22 2021-07-02 中国人民大学 一种基于压缩数据直接计算的大数据处理方法
CN113468128A (zh) * 2021-07-21 2021-10-01 上海浦东发展银行股份有限公司 一种数据处理的方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170075964A1 (en) * 2015-09-11 2017-03-16 International Business Machines Corporation Transforming and loading data utilizing in-memory processing
CN106897411A (zh) * 2017-02-20 2017-06-27 广东奡风科技股份有限公司 基于Spark技术的ETL系统及其方法
CN107315834A (zh) * 2017-07-12 2017-11-03 广东奡风科技股份有限公司 一种基于广度优先搜索算法的etl作业流程分析方法
CN107358061A (zh) * 2017-07-31 2017-11-17 中国科学技术大学 基于Spark和SIMD的弹性分布式序列比对系统及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170075964A1 (en) * 2015-09-11 2017-03-16 International Business Machines Corporation Transforming and loading data utilizing in-memory processing
CN106897411A (zh) * 2017-02-20 2017-06-27 广东奡风科技股份有限公司 基于Spark技术的ETL系统及其方法
CN107315834A (zh) * 2017-07-12 2017-11-03 广东奡风科技股份有限公司 一种基于广度优先搜索算法的etl作业流程分析方法
CN107358061A (zh) * 2017-07-31 2017-11-17 中国科学技术大学 基于Spark和SIMD的弹性分布式序列比对系统及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
王伟军: "《Spark案例与实验教程》", 30 April 2017, 重庆大学出版社 *
王海华: "Spark数据处理平台中内存数据空间管理技术研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 *

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109254989B (zh) * 2018-08-27 2020-11-20 望海康信(北京)科技股份公司 一种基于元数据驱动的弹性etl架构设计的方法及装置
CN109254989A (zh) * 2018-08-27 2019-01-22 北京东软望海科技有限公司 一种基于元数据驱动的弹性etl架构设计的方法及装置
CN109272159A (zh) * 2018-09-15 2019-01-25 夏琴 一种金融数据分析的平台风险控制方法
CN109284263A (zh) * 2018-09-30 2019-01-29 南方电网科学研究院有限责任公司 一种las文件的点云图浏览方法及相关装置
CN109800069B (zh) * 2018-12-25 2021-04-30 北京明略软件系统有限公司 一种实现数据治理的方法及装置
CN109800069A (zh) * 2018-12-25 2019-05-24 北京明略软件系统有限公司 一种实现数据治理的方法及装置
CN110059124A (zh) * 2019-04-22 2019-07-26 上海飞未信息技术有限公司 一种快速大规模影像数据分布式流水线处理方法和系统
CN110851515A (zh) * 2019-10-31 2020-02-28 武汉联图时空信息科技有限公司 一种基于Spark分布式环境下的大数据ETL模型执行方法及介质
CN110851515B (zh) * 2019-10-31 2023-04-28 武汉大学 一种基于Spark分布式环境下的大数据ETL模型执行方法及介质
CN111581254A (zh) * 2020-05-03 2020-08-25 上海维信荟智金融科技有限公司 基于互联网金融数据的etl方法及系统
CN112035468A (zh) * 2020-08-24 2020-12-04 杭州览众数据科技有限公司 基于内存计算、web可视化配置的多数据源ETL工具
CN112115191A (zh) * 2020-09-22 2020-12-22 南京北斗创新应用科技研究院有限公司 一种大数据etl模型执行的分支优化方法
CN112381583A (zh) * 2020-11-19 2021-02-19 深圳供电局有限公司 一种基于分布式内存计算技术的电力量费计算方法及装置
CN113064870A (zh) * 2021-03-22 2021-07-02 中国人民大学 一种基于压缩数据直接计算的大数据处理方法
CN113064870B (zh) * 2021-03-22 2021-11-30 中国人民大学 一种基于压缩数据直接计算的大数据处理方法
CN113468128A (zh) * 2021-07-21 2021-10-01 上海浦东发展银行股份有限公司 一种数据处理的方法、装置、电子设备及存储介质
CN113468128B (zh) * 2021-07-21 2023-02-17 上海浦东发展银行股份有限公司 一种数据处理的方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN108304538A (zh) 一种完全基于分布式内存计算的etl系统及其方法
CN106897411A (zh) 基于Spark技术的ETL系统及其方法
CA2997061C (en) Method and system for parallelization of ingestion of large data sets
CN106126601A (zh) 一种社保大数据分布式预处理方法及系统
CN106874437A (zh) 面向数据库一体机的内存数据仓库行列存储转换实现方法
CN106354729A (zh) 一种图数据处理方法、装置和系统
EP3963853B1 (en) Optimizing storage and retrieval of compressed data
CN107506381A (zh) 一种大数据分布式调度分析方法、系统装置及存储介质
CN107633001A (zh) 哈希分区优化方法和装置
CN114756629A (zh) 基于sql的多源异构数据交互分析引擎及方法
CN115292414A (zh) 一种业务数据同步到数仓的方法
CN109117426A (zh) 分布式数据库查询方法、装置、设备及存储介质
CN108415934A (zh) 一种Hive表修复方法、装置、设备及计算机可读存储介质
KR20140076010A (ko) 대용량 xml 데이터에 대한 다수의 가지 패턴 질의의 동시 병렬처리시스템 및 그 방법
CN113918532A (zh) 画像标签聚合方法、电子设备及存储介质
CN103559574B (zh) 一种工作流操作方法及系统
Gupta et al. Map-based graph analysis on MapReduce
CN104484174B (zh) Rar格式的压缩文件的处理方法和装置
CN113641654B (zh) 一种基于实时事件的营销处置规则引擎方法
Tseng et al. A successful application of big data storage techniques implemented to criminal investigation for telecom
CN110349635A (zh) 一种基因测序数据质量分数的并行压缩方法
CN113792079B (zh) 数据查询方法、装置、计算机设备和存储介质
CN109976905A (zh) 内存管理方法、装置和电子设备
KR20130047431A (ko) 대용량 배치처리를 위한 메모리 선적재 및 병렬처리 방법
CN108153744A (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20180720