CN109189798A - 一种基于spark同步更新数据的方法 - Google Patents

一种基于spark同步更新数据的方法 Download PDF

Info

Publication number
CN109189798A
CN109189798A CN201811159912.8A CN201811159912A CN109189798A CN 109189798 A CN109189798 A CN 109189798A CN 201811159912 A CN201811159912 A CN 201811159912A CN 109189798 A CN109189798 A CN 109189798A
Authority
CN
China
Prior art keywords
data
new
major key
file
spark
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
Application number
CN201811159912.8A
Other languages
English (en)
Other versions
CN109189798B (zh
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.)
Zhejiang Baishi Technology Co Ltd
Original Assignee
Zhejiang Baishi Technology Co Ltd
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 Zhejiang Baishi Technology Co Ltd filed Critical Zhejiang Baishi Technology Co Ltd
Priority to CN201811159912.8A priority Critical patent/CN109189798B/zh
Publication of CN109189798A publication Critical patent/CN109189798A/zh
Application granted granted Critical
Publication of CN109189798B publication Critical patent/CN109189798B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及数据更新技术领域,公开了一种基于spark同步更新数据的方法,包括:(1)导入数据;(2)分区命名;(3)对更新数据进行获取;(4)更新数据与原先数据进行替换:根据更新数据中表的数据的主键ID对目标数据的主键ID进行比对,将数据的主键ID相同的进行替换,形成新的目标数据,把更新数据的数据的主键ID缓存到更新集合里,设置的分割值判断数据大小进行分类处理。本发明通过大文件拆分成多个小文件,整理的时候能知道更新的数据在某一个小文件里,则整理只需要读取遍历小文件,提升了读取更新的速度。整个整理的过程结合两种方式,采用spark软件实现,起到了一个速度快,分布式计算的效果。

Description

一种基于spark同步更新数据的方法
技术领域
本发明涉及数据更新技术领域,尤其涉及了一种基于spark同步更新数据的方法。
背景技术
目前随着互联网的普及,人们越来越多的使用电子产品,互联网企业及相关企业本身存的数据量也越来越多,每天几千万的业务数据中大型公司,这么多数据如果能进行统计分析,分析业务增长趋势,以及用户行为之类的,对公司业务增长帮助比较大。
但目前数据库如oracle,mysql进行多表,且表数据很大,oracle sql分析存在性能瓶颈,很慢且直接影响了系统的稳定性,所以需要借助大数据相关技术,进行数据分析工作。
大数据分析涉及到两个部分,1:数据的存储2:数据的分析。数据分析依赖数据存储,目前大数据领域hdfs文件体系里的hdfs是常用的存储,数据分析借助spark较多.
所以如果大数据要进行大数据相关的分析,这里就需要把数据库里的数据从数据库同步到hdfs上,且hdfs上的数据需要和数据库里的数据保持一致。
因为hdfs是分布式文件系统,数据以文件的形式存在,文件里是每行数据,文件不像数据库那要可以执行更新操作,文件只能增加,这样如果数据库里的数据进行了更新操作,用java jdbc操作拉出来的数据因为文件是一直增加的,就会导致更新数据的重复,因为多个文件里都有这条记录,这样就不能和数据库保持一致了。
如果要保持一致,做法就是先读取老的文件,然后从文件一行行遍历,然后跟从数据库拉取的数据进行对比,如果发现文件里存在了,就去掉,然后文件里没有去掉的那部分重新写到新文件里,然后新文件和数据库的数据合并成大文件,然后替换掉之前的老文件,这样达到了文件数据更新的效果,我们称这个过程叫整理。
所以用传统方案实现将非常繁琐,而且数据数据库更新了最近比较长的数据,几个月,按每个几千万这个过程,单机跑需要很长时间,如果多机器跑需要自己实现分布式逻辑,相当复杂和繁琐,容易出错。
发明内容
本发明针对现有技术中过程复杂、容易出错的缺点,提供了一种基于spark同步更新数据的方法。
为了解决上述技术问题,本发明通过下述技术方案得以解决。
一种基于spark同步更新数据的方法,包括如下步骤:
(1)导入数据:使用spark平台从数据库获取目标列表存入hdfs文件;
(2)分区命名:通过spark分区方法对hdfs文件内的数据进行分区,根据创建日期,拉取需要的一个创建时间区间段的目标数据,并将该区间段数据按照目标数据的创建日期分别进行创建和命名文件夹,存入hdfs文件上的原始数据目录里;
(3)对更新数据进行获取:从数据库拉取更新数据列表,对更新数据进行读取并根据更新日期字段进行拉取,将更新数据用创建时间进行分区,存到hdfs文件的临时更新数据文件中,同时也将更新数据根据数据的创建日期进行创建更新文件夹;
(4)更新数据与原先数据进行替换:根据更新数据中表的数据的主键ID对目标数据的主键ID进行比对,将数据的主键ID相同的进行替换,形成新的目标数据,把更新数据的数据的主键ID缓存到更新集合里,设置的分割值判断数据大小进行分类处理:
①如更新数据小于分割值:根据更新数据文件夹名字对原始数据中的文件夹名字进行遍历,如文件夹名字相同,作为替换数据,直到遍历结束;如果不存在文件夹名字相同,则不进行替换;
将替换数据的主键ID遍历判断是否在更新集合里面,如存在,则将该数据删除;如不在,则根据创建时间分区创建增加文件夹,将增加文件夹与更新文件夹合并;
②如更新数据大于分割值:利用spark中的表的操作方法,分别对原始数据和更新数据生成根据创建时间为主键的原始数据表和更新数据表,通过join的方式执行原始数据表和更新数据表进行关联,关联字段为数据主键ID,如得到原始表里面数据主键ID不在更新表里面的数据作为增加数据,则根据创建时间,将增加数据与更新数据合并。
作为优选,步骤(4)中,分割值为100万行。
本发明由于采用了以上技术方案,具有显著的技术效果:本发明通过大文件拆分成多个小文件,整理的时候能知道更新的数据在某一个小文件里,则整理只需要读取遍历小文件,提升了读取更新的速度。在历史中的某一天更新了数据只要读取hdfs上哪一天的文件进行整理,使性能得到提升。整个整理的过程需要结合两种方式,采用spark软件实现,起到了一个速度快,分布式计算的效果。
附图说明
图1是本发明一种基于spark同步更新数据的方法的流程示意图。
具体实施方式
下面结合附图与实施例对本发明作进一步详细描述。
如图1所示,一种基于spark同步更新数据的方法,包括如下步骤:
(1)导入数据:使用spark平台从数据库获取目标列表存入hdfs文件;
(2)分区命名:通过spark分区方法对hdfs文件内的数据进行分区,根据创建日期,拉取需要的一个创建时间区间段的目标数据,并将该区间段数据按照目标数据的创建日期分别进行创建和命名文件夹,存入hdfs文件上的原始数据目录里;
(3)对更新数据进行获取:从数据库拉取更新数据列表,对更新数据进行读取并根据更新日期字段进行拉取,将更新数据用创建时间进行分区,存到hdfs文件的临时更新数据文件中,同时也将更新数据根据数据的创建日期进行创建更新文件夹;
(4)更新数据与原先数据进行替换:根据更新数据中表的数据的主键ID对目标数据的主键ID进行比对,将数据的主键ID相同的进行替换,形成新的目标数据,把更新数据的数据的主键ID缓存到更新集合里,设置的分割值判断数据大小进行分类处理:
①如更新数据小于分割值:根据更新数据文件夹名字对原始数据中的文件夹名字进行遍历,如文件夹名字相同,作为替换数据,直到遍历结束;如果不存在文件夹名字相同,则不进行替换;
将替换数据的主键ID遍历判断是否在更新集合里面,如存在,则将该数据删除;如不在,则根据创建时间分区创建增加文件夹,将增加文件夹与更新文件夹合并;
②如更新数据大于分割值:利用spark中的表的操作方法,分别对原始数据和更新数据生成根据创建时间为主键的原始数据表和更新数据表,通过join的方式执行原始数据表和更新数据表进行关联,关联字段为数据主键ID,如得到原始表里面数据主键ID不在更新表里面的数据作为增加数据,则根据创建时间,将增加数据与更新数据合并。
步骤(4)中,分割值为100万行。
本发明通过大文件拆分成多个小文件,整理的时候能知道更新的数据在某一个小文件里,则整理只需要读取遍历小文件,提升了读取更新的速度。在历史中的某一天更新了数据只要读取hdfs上哪一天的文件进行整理,使性能得到提升。整个整理的过程需要结合两种方式,采用spark实现,起到了一个速度快,分布式计算的效果。
总之,以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所作的均等变化与修饰,皆应属本发明专利的涵盖范围。

Claims (2)

1.一种基于spark同步更新数据的方法,其特征在于,包括如下步骤:
(1)导入数据:使用spark平台从数据库获取目标列表存入hdfs文件;
(2)分区命名:通过spark分区方法对hdfs文件内的数据进行分区,根据创建日期,拉取需要的一个创建时间区间段的目标数据,并将该区间段数据按照目标数据的创建日期分别进行创建和命名文件夹,存入hdfs文件上的原始数据目录里;
(3)对更新数据进行获取:从数据库拉取更新数据列表,对更新数据进行读取并根据更新日期字段进行拉取,将更新数据用创建时间进行分区,存到hdfs文件的临时更新数据文件中,同时也将更新数据根据数据的创建日期进行创建更新文件夹;
(4)更新数据与原先数据进行替换:根据更新数据中表的数据的主键ID对目标数据的主键ID进行比对,将数据的主键ID相同的进行替换,形成新的目标数据,把更新数据的数据的主键ID缓存到更新集合里,设置的分割值判断数据大小进行分类处理:
①如更新数据小于分割值:根据更新数据文件夹名字对原始数据中的文件夹名字进行遍历,如文件夹名字相同,作为替换数据,直到遍历结束;如果不存在文件夹名字相同,则不进行替换;
将替换数据的主键ID遍历判断是否在更新集合里面,如存在,则将该数据删除;如不在,则根据创建时间分区创建增加文件夹,将增加文件夹与更新文件夹合并;
②如更新数据大于分割值:利用spark中的表的操作方法,分别对原始数据和更新数据生成根据创建时间为主键的原始数据表和更新数据表,通过join的方式执行原始数据表和更新数据表进行关联,关联字段为数据主键ID,如得到原始表里面数据主键ID不在更新表里面的数据作为增加数据,则根据创建时间,将增加数据与更新数据合并。
2.根据权利要求1所述的一种基于spark同步更新数据的方法,其特征在于:步骤(4)中,分割值为100万行。
CN201811159912.8A 2018-09-30 2018-09-30 一种基于spark同步更新数据的方法 Active CN109189798B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811159912.8A CN109189798B (zh) 2018-09-30 2018-09-30 一种基于spark同步更新数据的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811159912.8A CN109189798B (zh) 2018-09-30 2018-09-30 一种基于spark同步更新数据的方法

Publications (2)

Publication Number Publication Date
CN109189798A true CN109189798A (zh) 2019-01-11
CN109189798B CN109189798B (zh) 2021-12-17

Family

ID=64946442

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811159912.8A Active CN109189798B (zh) 2018-09-30 2018-09-30 一种基于spark同步更新数据的方法

Country Status (1)

Country Link
CN (1) CN109189798B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109857997A (zh) * 2019-02-02 2019-06-07 杭州费尔斯通科技有限公司 一种离线表关联方法
CN110691446A (zh) * 2019-09-12 2020-01-14 深圳市云慧联科技有限公司 Id信息二次生成方法及装置
CN113495891A (zh) * 2020-03-19 2021-10-12 北京京东振世信息技术有限公司 一种数据处理方法和装置
CN113779141A (zh) * 2021-08-10 2021-12-10 携程商旅信息服务(上海)有限公司 商旅酒店信息同步存储方法、电子设备和介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160092476A1 (en) * 2014-09-26 2016-03-31 Oracle International Corporation Declarative external data source importation, exportation, and metadata reflection utilizing http and hdfs protocols
CN105550296A (zh) * 2015-12-10 2016-05-04 深圳市华讯方舟软件技术有限公司 一种基于spark-SQL大数据处理平台的数据导入方法
CN105550293A (zh) * 2015-12-11 2016-05-04 深圳市华讯方舟软件技术有限公司 一种基于Spark-SQL大数据处理平台的后台刷新方法
CN105956123A (zh) * 2016-05-03 2016-09-21 无锡雅座在线科技发展有限公司 基于局部更新软件的数据处理方法及装置
CN106484877A (zh) * 2016-10-14 2017-03-08 东北大学 一种基于hdfs的文件检索系统
CN106843763A (zh) * 2017-01-19 2017-06-13 北京神州绿盟信息安全科技股份有限公司 一种基于hdfs系统的文件合并方法及装置
CN107330024A (zh) * 2017-06-21 2017-11-07 华为机器有限公司 标签系统数据的存储方法和装置
CN107967279A (zh) * 2016-10-19 2018-04-27 北京国双科技有限公司 分布式数据库的数据更新方法及装置
CN108153859A (zh) * 2017-12-24 2018-06-12 浙江工商大学 一种基于Hadoop与Spark的效用次序并行确定方法
CN108256115A (zh) * 2017-09-05 2018-07-06 国家计算机网络与信息安全管理中心 一种面向SparkSql的HDFS小文件实时合并实现方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160092476A1 (en) * 2014-09-26 2016-03-31 Oracle International Corporation Declarative external data source importation, exportation, and metadata reflection utilizing http and hdfs protocols
CN105550296A (zh) * 2015-12-10 2016-05-04 深圳市华讯方舟软件技术有限公司 一种基于spark-SQL大数据处理平台的数据导入方法
CN105550293A (zh) * 2015-12-11 2016-05-04 深圳市华讯方舟软件技术有限公司 一种基于Spark-SQL大数据处理平台的后台刷新方法
CN105956123A (zh) * 2016-05-03 2016-09-21 无锡雅座在线科技发展有限公司 基于局部更新软件的数据处理方法及装置
CN106484877A (zh) * 2016-10-14 2017-03-08 东北大学 一种基于hdfs的文件检索系统
CN107967279A (zh) * 2016-10-19 2018-04-27 北京国双科技有限公司 分布式数据库的数据更新方法及装置
CN106843763A (zh) * 2017-01-19 2017-06-13 北京神州绿盟信息安全科技股份有限公司 一种基于hdfs系统的文件合并方法及装置
CN107330024A (zh) * 2017-06-21 2017-11-07 华为机器有限公司 标签系统数据的存储方法和装置
CN108256115A (zh) * 2017-09-05 2018-07-06 国家计算机网络与信息安全管理中心 一种面向SparkSql的HDFS小文件实时合并实现方法
CN108153859A (zh) * 2017-12-24 2018-06-12 浙江工商大学 一种基于Hadoop与Spark的效用次序并行确定方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
DENNY ET AL.: "Implementation of Change Data Capture in ETL Process for Data Warehouse Using HDFS and Apache Spark", 《2017 INTERNATIONAL WORKSHOP ON BIG DATA AND INFORMATION SECURITY》 *
NUSRAT SHARMIN ISLAM ET AL.: "High Performance Design for HDFS with yte-Addressability of NVM and RDMA", 《PROCEEDINGS OF THE 2016 INTERNATIONAL CONFERENCE ON SUPERCOMPUTING》 *
李爽: "基于Spark的数据处理分析系统的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
陈世敏: "大数据分析与高速数据更新", 《计算机研究与发展》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109857997A (zh) * 2019-02-02 2019-06-07 杭州费尔斯通科技有限公司 一种离线表关联方法
CN109857997B (zh) * 2019-02-02 2019-10-29 杭州费尔斯通科技有限公司 一种离线表关联方法
CN110691446A (zh) * 2019-09-12 2020-01-14 深圳市云慧联科技有限公司 Id信息二次生成方法及装置
CN110691446B (zh) * 2019-09-12 2021-11-19 深圳市云慧联科技有限公司 Id信息二次生成方法及装置
CN113495891A (zh) * 2020-03-19 2021-10-12 北京京东振世信息技术有限公司 一种数据处理方法和装置
CN113495891B (zh) * 2020-03-19 2023-09-26 北京京东振世信息技术有限公司 一种数据处理方法和装置
CN113779141A (zh) * 2021-08-10 2021-12-10 携程商旅信息服务(上海)有限公司 商旅酒店信息同步存储方法、电子设备和介质

Also Published As

Publication number Publication date
CN109189798B (zh) 2021-12-17

Similar Documents

Publication Publication Date Title
CN109189798A (zh) 一种基于spark同步更新数据的方法
US11580104B2 (en) Method, apparatus, device, and storage medium for intention recommendation
US20230376506A1 (en) System and Method for Analysis and Management of Data Distribution in a Distributed Database Environment
US10445321B2 (en) Multi-tenant distribution of graph database caches
US10565208B2 (en) Analyzing multiple data streams as a single data object
Gousios The GHTorent dataset and tool suite
US8965915B2 (en) Assisted query formation, validation, and result previewing in a database having a complex schema
Copeland MongoDB Applied Design Patterns: Practical Use Cases with the Leading NoSQL Database
US10180992B2 (en) Atomic updating of graph database index structures
JP5264740B2 (ja) 時系列検索エンジン
CN105574054B (zh) 一种分布式缓存范围查询方法、装置及系统
US20170255708A1 (en) Index structures for graph databases
KR101740271B1 (ko) 온라인 상에서 실시간으로 업데이트되는 대규모 오디오 핑거프린트 데이터베이스의 구축 방법 및 장치
US20140214753A1 (en) Systems and methods for multi-source data-warehousing
US20140188784A1 (en) Systems and methods for data-warehousing to facilitate advanced business analytic assessment
CN106844102A (zh) 数据恢复方法和装置
Szárnyas et al. The LDBC social network benchmark: Business intelligence workload
US10445370B2 (en) Compound indexes for graph databases
WO2020082597A1 (zh) 一种b+树节点的批量插入和删除方法及装置
CN105975489A (zh) 一种基于元数据的在线sql代码补全方法
CN103064908A (zh) 一种通过内存快速去重名单的方法
CN105610881B (zh) 一种分布式缓存范围查询方法、装置及系统
CN111782731A (zh) 一种数据同步方法及装置
US11928083B2 (en) Determining collaboration recommendations from file path information
Nasir et al. Tiptap: approximate mining of frequent k-subgraph patterns in evolving graphs

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
GR01 Patent grant
GR01 Patent grant