CN108763259A - 一种大数据平台数据加载转化算法 - Google Patents
一种大数据平台数据加载转化算法 Download PDFInfo
- Publication number
- CN108763259A CN108763259A CN201810288789.3A CN201810288789A CN108763259A CN 108763259 A CN108763259 A CN 108763259A CN 201810288789 A CN201810288789 A CN 201810288789A CN 108763259 A CN108763259 A CN 108763259A
- Authority
- CN
- China
- Prior art keywords
- data
- tables
- slide fastener
- platform
- txdate
- 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
Abstract
本发明公开了一种大数据平台数据历史拉链加载转化算法将源数据通过统一编码转换、业务转换插入最终的目标表并记录源数据的历史变化进程。实现了将数据仓库从传统的DBMS向Hadoop平台平稳过渡,从原来的UPDATE‑INSERT操作转换为DROP PARTITON‑INSERT来适应大数据平台技术特性,扬长避短使用了大数据平台对分区操作的高性能技术特点,在清洗、转化数据方面的性能优于传统数据仓库,在整体的跑批效率都优于传统的MPP的数据仓库。
Description
技术领域
本发明属于计算机软件技术领域,具体涉及一种大数据平台数据加载转化算法。
背景技术
在银行业的数据仓库平台绝大部分都是应用在RDBMS(关系型数据库)平台上,而在大数据(Hadoop)平台上搭建的数据仓库却不多见。由于受成本、运算效率、容错性、可扩展性等方面的影响,数据仓库向Hadoop平台迁移必定是一股潮流。而相应的数据仓库模型、数据的转换算法也需要相应的往大数据方向变迁。
目前PDM层模型设计中比较成熟的实施方法论Teradata FS-LDM(第三范式主题级)、Bill Inmon(第三范式星型模型)、Ralph Kimball(维度模型)、以及最近流行的DataVault。无论采用怎样的实施方法论,业务的状态值(比如账户的状态、借据余额的变化等)在数据仓库中需要存储历史状态的事实没有改变。所以就出现了拉链表(也称为历史拉链表)。历史拉链表的处理分两条线:一是增量的历史拉链,二是全量的历史拉链。
拉链表在数据仓库中根据数据存储的方式来定义的。所谓拉链,就是存储事物在各时间段的变化状态,保存整个记录的生命周期。一般的情况下拉链表会添加两个(但不仅仅是两个)技术字段,开始日期(start_dt)与结束日期(end_dt)记录数据在时间范围内的变化状态。start_dt一般定义为批量的日期($txdate),end_dt一般定义为未来某个日期(比如3000-12-31),表示该行数据的有效期,比如3000-12-31表示该数据当前是有效的。
传统数据仓库从Stage→拉链算法→PDM的实施过程,该过程其实是UPDATE-INSERT的过程。传统的数据仓库的关链操作是以SQL(Structure Query Language结构化查询语句)的UPDATE语句实现的。而Hadoop平台底层是HDFS(Hadoop Distributed FileSystem)分布式文件系统,对HIVE进行大批量的UPDATE操作目前的技术难度很大,即时现在市面上有些Hadoop平台能实现UPDATE的操作那往往也在HBase上,插入和更新都转换成对HDFS的HFile文件的创建插入和更新的问题,而查询就变得相对麻烦。以查询性能的下降来换取更新性能的提升,而对于数据仓库来讲是大量的查询需求,所以使用HBase的方式是不大可能的。本文只讨论在HDFS+Hive的实现方式。
发明内容
本发明的目的在于:针对上述的Hadoop平台底层是HDFS分布式文件系统,对文件进行大批量UPDATE操作的技术难度大的问题,HDFS不支持文件更新操作,一旦一个文件生成后,在一次性的写完文件关闭之后,这个文件就不能被改变了。为什么这么设计?是为了与MapReduce相配合,MapReduce的工作模式是接受一系列输入文件,经过map和reduce处理,然后输出一系列文件,而不是在原来的输入文件上做原位更新。为什么这么做?因为效率,直接输出新文件比更新一个旧文件效率高的多。本文提出一种大数据平台数据加载转化算法来使用HDFS+Hive本身的技术特性、运算性能,在Hadoop平台实现历史拉链算法。
本发明采用的技术方案如下:
一种大数据平台数据加载转化算法,包括如下步骤:
S1:编写抽取的业务逻辑将结果放入n表;
S2:计算有效全量通过start_dt<=$txdate and end_dt>$txdate将结果放入o表;
S3:计算出新增、修改、删除的数据:o表FULL JOIN n表通过主键字段关联。在SELECT字段时COALESCE(n.字段,o.字段)对字段进行去空处理。其关键是对start_dt与end_dt的计算,start_dt的赋值:判断n.主键如果为NULL值则取o.start_dt否则取当前的跑批日期$txdate,表示该条数据是新增数据。end_dt的赋值:判断如果n.主键为NULL值则取当前的跑批日期$txdate关链该条数据,否则取3000-12-31开链该条数据。将结果放入new_ad表;
S4:计算出o表表变化的数据:o表LEFT JOIN new_ad表通过主键字段关联,SELECT计是取o的字段。start_dt的赋值:直取取o.start_dt;end_dt的赋值判断如果n.主键为NULL则取3000-12-31否则取$tx_date。将结果数据放入o ld_a l;
S5:理清PDM目标拉链表的数据ALTER TABLE DROP PARTITON;
S6:待清理完成S5步完成后将new_ad表与old_al表的数据插入目标拉链表。
参数说明:$txdate表示运行的批量日期。
通过上述步骤将源数据通过统一编码转换、业务转换插入临时表n表,然后从目标表中取当前生效的所有数据放入临时表o表,n表通再过主键全表连接o表,从而有效的找到新增、修改的数据,通过计算从而改变START_DT(开链日期)、END_DT(关链日期)的值。O表通过主键左连接N表计算出O层没有变化的数据;增强容错重跑机制,清理当天加载完成的数据,最后将S3与S4的结果集插入到目标表。实现了将数据仓库从传统的DBMS向Hadoop平台,从原来的UPDATE-INSERT操作转换为DROP PARTITON-INSERT来适应大数据平台技术特性,扬长避短使用了大数据平台对操作分区高性能的技术特点,在清理数据(alter tabledrop partition)方面的性能优于传统数据仓库。
优选地,所述步骤S3生成所有需要插入拉链数据新增、添加和删除的数据,其中start_dt和end_dt为常量。
优选地,所述步骤S4生成所有需要关联拉链数据新增、添加和删除的数据,其中start_dt和end_dt为常量。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
1、本发明中,受Hadoop平台的技术特性影响,如果将传统数据仓库的拉链算法移植到大数据平台,运行的效率将低,HDFS文件系统并不支持大规模UPDATE操作,通过本发明的算法实现了在大数据平台上的拉链算法,并且运行效率高。
2、本发明中,通过本算法,在Hadoop平台上实现了类似于传统数据库的拉链算法,在开源Hadoop平台运行拉链算法的运行效率高,远优于传统的数据仓库平台。
3、依托于Hadoop平台该算法的性能远高于传统的MPP数据库
附图说明
图1为Hadoop模型层拉链算法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
一种大数据平台数据加载转化算法,包括如下步骤:
S1:编写抽取的业务逻辑将结果放入n表;
S2:计算有效全量通过start_dt<=$txdate and end_dt>$txdate将结果放入o表;
S3:计算出新增、修改、删除的数据:o表FULL JOINn表通过主键字段关联。在SELECT字段时COALESCE(n.字段,o.字段)对字段进行去空处理。其关键是对start_dt与end_dt的计算,start_dt的赋值:判断n.主键如果为NULL值则取o.start_dt否则取当前的跑批日期$txdate,表示该条数据是新增数据。end_dt的赋值:判断如果n.主键为NULL值则取当前的跑批日期$txdate关链该条数据,否则取3000-12-31开链该条数据。将结果放入new_ad表;
S4:计算出o表表变化的数据:o表LEFT JOIN new_ad表通过主键字段关联,SELECT计是取o的字段。start_dt的赋值:直取取o.start_dt;end_dt的赋值判断如果n.主键为NULL则取3000-12-31否则取$tx_date。将结果数据放入old_al;
S5:理清PDM目标拉链表的数据ALTER TABLE DROP PARTITON;
S6:待清理完成S5步完成后将new_ad表与old_al表的数据插入目标拉链表。
参数说明:$txdate表示运行的批量日期。
通过上述步骤将源数据通过统一编码转换、业务转换插入临时表n表,然后从目标表中取当前生效的所有数据放入临时表o表,n表通再过主键全表连接o表,从而有效的找到新增、修改的数据,通过计算从而改变START_DT(开链日期)、END_DT(关链日期)的值。O表通过主键左连接N表计算出O层没有变化的数据;增强容错重跑机制,清理当天加载完成的数据,最后将S3与S4的结果集插入到目标表。实现了将数据仓库从传统的DBMS向Hadoop平台,从原来的UPDATE-INSERT操作转换为DROP PARTITON-INSERT来适应大数据平台技术特性,扬长避短,使用了大数据平台对操作分区高性能的技术特点,在清理数据(alter tabledrop partition)方面的性能优于传统数据仓库。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (3)
1.一种大数据平台数据加载转化算法,其特征在于,包括如下步骤:
S1:编写抽取的业务逻辑将结果放入n表;
S2:计算有效全量通过start_dt<=$txdate and end_dt>$txdate将结果放入o表;
S3:计算出新增、修改、删除的数据:o表FULL JOIN n表通过主键字段关联。在SELECT字段时COALESCE(n.字段,o.字段)对字段进行去空处理。其关键是对start_dt与end_dt的计算,start_dt的赋值:判断n.主键如果为NULL值则取o.start_dt否则取当前的跑批日期$txdate,表示该条数据是新增数据。end_dt的赋值:判断如果n.主键为NULL值则取当前的跑批日期$txdate关链该条数据,否则取3000-12-31开链该条数据。将结果放入new_ad表;
S4:计算出o表表变化的数据:o表LEFT JOIN new_ad表通过主键字段关联,SELECT计是取o的字段。start_dt的赋值:直取取o.start_dt;end_dt的赋值判断如果n.主键为NULL则取3000-12-31否则取$tx_date。将结果数据放入o ld_a l;
S5:理清PDM目标拉链表的数据ALTER TABLE DROP PARTITON;
S6:待清理完成S5步完成后将new_ad表与old_al表的数据插入目标拉链表。
参数说明:$txdate表示运行的批量日期。
2.根据权利要求1所述的一种大数据平台数据加载转化算法,其特征在于:所述步骤S3生成所有需要插入拉链数据新增、添加和删除的数据,其中start_dt和end_dt为常量。
3.根据权利要求1所述的一种大数据平台数据加载转化算法,其特征在于:所述步骤S4生成所有需要关联拉链数据新增、添加和删除的数据,其中start_dt和end_dt为常量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810288789.3A CN108763259A (zh) | 2018-04-03 | 2018-04-03 | 一种大数据平台数据加载转化算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810288789.3A CN108763259A (zh) | 2018-04-03 | 2018-04-03 | 一种大数据平台数据加载转化算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108763259A true CN108763259A (zh) | 2018-11-06 |
Family
ID=63980797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810288789.3A Pending CN108763259A (zh) | 2018-04-03 | 2018-04-03 | 一种大数据平台数据加载转化算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108763259A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110287211A (zh) * | 2019-07-01 | 2019-09-27 | 四川新网银行股份有限公司 | 基于大数据平台的动态sql语句的执行方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101504664A (zh) * | 2009-03-18 | 2009-08-12 | 中国工商银行股份有限公司 | 对全量源数据进行抽取转换加载的装置及方法 |
US20140324875A1 (en) * | 2013-04-29 | 2014-10-30 | Keyw Corporation | Index for fast batch updates of large data tables |
CN105095484A (zh) * | 2015-08-17 | 2015-11-25 | 北京京东世纪贸易有限公司 | 一种数据拉链方法 |
CN107193985A (zh) * | 2017-05-27 | 2017-09-22 | 郑州云海信息技术有限公司 | 一种记录数据变化历史的拉链表设计方法 |
CN107729423A (zh) * | 2017-09-28 | 2018-02-23 | 链家网(北京)科技有限公司 | 一种大数据处理方法及装置 |
-
2018
- 2018-04-03 CN CN201810288789.3A patent/CN108763259A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101504664A (zh) * | 2009-03-18 | 2009-08-12 | 中国工商银行股份有限公司 | 对全量源数据进行抽取转换加载的装置及方法 |
US20140324875A1 (en) * | 2013-04-29 | 2014-10-30 | Keyw Corporation | Index for fast batch updates of large data tables |
CN105095484A (zh) * | 2015-08-17 | 2015-11-25 | 北京京东世纪贸易有限公司 | 一种数据拉链方法 |
CN107193985A (zh) * | 2017-05-27 | 2017-09-22 | 郑州云海信息技术有限公司 | 一种记录数据变化历史的拉链表设计方法 |
CN107729423A (zh) * | 2017-09-28 | 2018-02-23 | 链家网(北京)科技有限公司 | 一种大数据处理方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110287211A (zh) * | 2019-07-01 | 2019-09-27 | 四川新网银行股份有限公司 | 基于大数据平台的动态sql语句的执行方法 |
CN110287211B (zh) * | 2019-07-01 | 2022-11-04 | 四川新网银行股份有限公司 | 基于大数据平台的动态sql语句的执行方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103186566B (zh) | 一种数据分级存储方法、装置及系统 | |
CN103177068B (zh) | 按照生存规则合并源记录的系统和方法 | |
US8214324B2 (en) | Generating extract, transform, and load (ETL) jobs for loading data incrementally | |
CN100541441C (zh) | 一种计算机文件系统的快照创建、删除及修改方法 | |
CN111712809A (zh) | 通过示例来学习etl规则 | |
US20070294215A1 (en) | Method, system, and program product for generating a virtual database | |
US7814045B2 (en) | Semantical partitioning of data | |
CN106599043A (zh) | 用于多级数据库的中间件和多级数据库系统 | |
CN105074724A (zh) | 使用列式数据库中的直方图进行有效查询处理 | |
CN104933160B (zh) | 一种面向安全监测业务分析的etl框架设计方法 | |
CN104504008B (zh) | 一种基于嵌套的SQL到HBase的数据迁移算法 | |
CN105989150A (zh) | 一种基于大数据环境的数据查询方法及装置 | |
Ngu et al. | B+-tree construction on massive data with Hadoop | |
WO2006026702A2 (en) | Methods and systems for semantic identification in data systems | |
CN111639121A (zh) | 一种构建客户画像的大数据平台及构建方法 | |
CN105159971A (zh) | 一种云平台数据检索方法 | |
US9524331B2 (en) | Method and system for representing OLAP queries using directed acyclic graph structures in a datagrid to support real-time analytical operations | |
Hlupić et al. | An overview of current data lake architecture models | |
CN108763259A (zh) | 一种大数据平台数据加载转化算法 | |
Sreemathy et al. | Data validation in ETL using TALEND | |
US20200409939A1 (en) | Systems and methods for scalable database technology | |
US7236971B1 (en) | Method and system for deriving data through interpolation in a database system | |
Feng et al. | An Approach to Converting Relational Database to Graph Database: from MySQL to Neo4j | |
Zhu et al. | Efficient star join for column-oriented data store in the mapreduce environment | |
Altın et al. | Analyzing the Encountered Problems and Possible Solutions of Converting Relational Databases to Graph Databases |
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 |
Application publication date: 20181106 |
|
RJ01 | Rejection of invention patent application after publication |