CN109857997A - 一种离线表关联方法 - Google Patents

一种离线表关联方法 Download PDF

Info

Publication number
CN109857997A
CN109857997A CN201910108125.9A CN201910108125A CN109857997A CN 109857997 A CN109857997 A CN 109857997A CN 201910108125 A CN201910108125 A CN 201910108125A CN 109857997 A CN109857997 A CN 109857997A
Authority
CN
China
Prior art keywords
spark
parameter
task
python
python file
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
CN201910108125.9A
Other languages
English (en)
Other versions
CN109857997B (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.)
Huoshi Creation Technology Co ltd
Original Assignee
Hangzhou Firestone 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 Hangzhou Firestone Technology Co Ltd filed Critical Hangzhou Firestone Technology Co Ltd
Priority to CN201910108125.9A priority Critical patent/CN109857997B/zh
Publication of CN109857997A publication Critical patent/CN109857997A/zh
Application granted granted Critical
Publication of CN109857997B publication Critical patent/CN109857997B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

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

Abstract

本发明公开了一种离线表关联方法,步骤包括:创建一个基于spark的python文件模板;将前端页面传递过来的参数进行参数组装、sql拼接,转换成python文件模板所需要的参数;将python文件模板进行参数的替换,替换成sql拼接后的参数,生成一个可执行的python文件;将python文件上传到spark运行的服务器;根据python文件生成一个azkaban任务的zip包,把执行命令和执行文件打到zip包里,并在azkaban服务器生成一个项目;调用azkaban服务器启动项目,从而开始运行任务。本发明能够实现elasticsearch多张表之间的关联;优化了spark执行任务的流程,减少了一些不必要的操作;每次运行spark任务不需要进行打包处理,对任务具有管理和调度功能。

Description

一种离线表关联方法
技术领域
本发明涉及数据处理领域,尤其涉及一种基于spark的elasticsearch离线表关联方法。
背景技术
实时关联elasticsearch的有已经开源的elasticsearch1_sql进行表关联,其内部是把第一张表的数据放在内存中,然后把第一张表的数据拿到第二张表进行逻辑的关联;离线的elasticsearch表关联主要是通过spark的rdd之间进行join关联。现有技术存在以下缺陷:
1.elasticsearch_sql应用的表关联,由于第一张表数据是放在内存中的,所以对表的数量有10w的限制,故查出来的数据不全,只能针对小表进行关联,且由于其策略是拿第一张表数据去第二张查,所以目前仅支持两张表进行关联,不支持多张;
2.目前离线elasticsearch表关联是通过spark的rdd之间进行join关联的,由于其不同逻辑要写不同的代码进行实现,且很多时候整个程序的DAG流程图过于复杂,而且有些不必要的操作,从而影响程序的运行速度。
发明内容
本发明针对现有技术的不足,提出一种基于spark的elasticsearch离线表关联方法,本发明能够实现elasticsearch多张表之间的关联;优化了spark执行任务的流程,减少了一些不必要的操作;通过页面设置参数,生成对应的sql,从而执行表关联;每次运行spark任务不需要进行打包处理,对任务具有管理和调度功能。
本发明的目的通过以下技术方案实现:一种离线表关联方法,该方法包括以下步骤:
(1)创建一个基于spark的python文件模板,具体包括以下子步骤:
(1.1)创建一个spark实例,将该spark实例连接到elasticsearch,从而获得一个rdd。
(1.2)将rdd转成spark的dateFrame注入到内存中,并将dateFrame声明成一张临时表。
(1.3)把所有待关联的表均进行(1.1)、(1.2)两个步骤的操作,生成多张临时表;
(1.4)在页面配置待关联的表、查询条件及字段,利用java转换成sql语句,并通过spark sql进行多表之间的关联,得到一张结果表。
(1.5)将结果表回存到elasticsearch中,完成python文件模板的创建。
(2)将前端页面传递过来的参数进行参数组装、sql拼接,转换成python文件模板所需要的参数。
(3)将python文件模板进行参数的替换,替换成步骤(2)sql拼接后的参数,生成一个可执行的python文件。
(4)将python文件上传到spark运行的服务器。
(5)根据python文件生成一个azkaban任务的zip包,把执行命令和执行文件(python文件)打到zip包里,并在azkaban服务器生成一个项目。
(6)执行任务时,调用azkaban服务器启动项目,从而开始运行任务。
进一步地,所述步骤(1.1)中,可以对该rdd进行数据初步处理后再进行后续操作,数据初步处理包括:将id加入到rdd中、nested平铺。
进一步地,所述步骤(1.4)中,该结果表可进一步进行多次关联。
进一步地,所述步骤(6)中,任务结束后,进行邮件的发送,告知页面操作者执行情况,包括表关联是否成功,有无异常等。
本发明的有益效果是:本发明通过模板进行通用化的代码抽象化抽取,可以解决各种关联数据,数据间关联用sql就可以解决,spark sql也可以自己优化DAG流程图,且支持多表间的关联,并且操作人员不需要sql知识,只需要知道哪张表,什么条件,通过页面组件配置生成对应的sql语句。为避免java每次执行时要编译,故采用一个python文件模板,应用java生成的python代码进行任务运行。在离线关联中把提供给用户的服务、运行任务服务和管理任务的服务完全分离,减少彼此之间的影响。
附图说明
图1为本发明离线表关联方法流程图;
图2为python文件模板创建流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步详细说明。
如图1所示,本发明提出的一种离线表关联方法,该方法包括以下步骤:
(1)创建一个基于spark的python文件模板,如图2所示,具体包括以下子步骤:
(1.1)创建一个spark实例,将该spark实例连接到elasticsearch,从而获得一个rdd;可以对该rdd进行数据初步处理后再进行后续操作,数据初步处理包括:将id加入到rdd中、nested平铺(如果需要nested平铺,则将该rdd进行数据拆分)等;
(1.2)把步骤(1.1)处理好的rdd转成spark的dateFrame并注入到内存中,并将dateFrame声明成一张临时表,以供后续使用;
(1.3)把所有待关联的表均进行(1.1)、(1.2)两个步骤的操作,生成多张临时表;
(1.4)在页面配置待关联的表、查询条件及字段,利用java转换成sql语句,并通过spark sql进行多表之间的关联,得到一张结果表(该结果表可进一步进行多次关联);
(1.5)将结果表回存到elasticsearch中,完成python文件模板的创建。
(2)将前端页面传递过来的参数进行参数组装、sql拼接,转换成python文件模板所需要的参数。
(3)将python文件模板进行参数的替换,替换成步骤(2)sql拼接后的参数,生成一个可执行的python文件。
(4)将python文件上传到spark运行的服务器。
(5)根据python文件生成一个azkaban任务的zip包,把执行命令和执行文件(python文件)打到zip包里,并在azkaban服务器生成一个项目。
(6)执行任务时,调用azkaban服务器启动项目,从而开始运行任务;
(7)任务结束后,进行邮件的发送,告知页面操作者执行情况(表关联是否成功,有无异常等)。
上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。

Claims (4)

1.一种离线表关联方法,其特征在于,该方法包括以下步骤:
(1)创建一个基于spark的python文件模板,具体包括以下子步骤:
(1.1)创建一个spark实例,将该spark实例连接到elasticsearch,从而获得一个rdd。
(1.2)将rdd转成spark的dateFrame注入到内存中,并将dateFrame声明成一张临时表。
(1.3)把所有待关联的表均进行(1.1)、(1.2)两个步骤的操作,生成多张临时表;
(1.4)在页面配置待关联的表、查询条件及字段,利用java转换成sql语句,并通过spark sql进行多表之间的关联,得到一张结果表。
(1.5)将结果表回存到elasticsearch中,完成python文件模板的创建。
(2)将前端页面传递过来的参数进行参数组装、sql拼接,转换成python文件模板所需要的参数。
(3)将python文件模板进行参数的替换,替换成步骤(2)sql拼接后的参数,生成一个可执行的python文件。
(4)将python文件上传到spark运行的服务器。
(5)根据python文件生成一个azkaban任务的zip包,把执行命令和执行文件(python文件)打到zip包里,并在azkaban服务器生成一个项目。
(6)执行任务时,调用azkaban服务器启动项目,从而开始运行任务。
2.根据权利要求1所述的一种离线表关联方法,其特征在于,所述步骤(1.1)中,可以对该rdd进行数据初步处理后再进行后续操作,数据初步处理包括:将id加入到rdd中、nested平铺。
3.根据权利要求1所述的一种离线表关联方法,其特征在于,所述步骤(1.4)中,该结果表可进一步进行多次关联。
4.根据权利要求1所述的一种离线表关联方法,其特征在于,所述步骤(6)中,任务结束后,进行邮件的发送,告知页面操作者执行情况,包括表关联是否成功,有无异常等。
CN201910108125.9A 2019-02-02 2019-02-02 一种离线表关联方法 Active CN109857997B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910108125.9A CN109857997B (zh) 2019-02-02 2019-02-02 一种离线表关联方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910108125.9A CN109857997B (zh) 2019-02-02 2019-02-02 一种离线表关联方法

Publications (2)

Publication Number Publication Date
CN109857997A true CN109857997A (zh) 2019-06-07
CN109857997B CN109857997B (zh) 2019-10-29

Family

ID=66897674

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910108125.9A Active CN109857997B (zh) 2019-02-02 2019-02-02 一种离线表关联方法

Country Status (1)

Country Link
CN (1) CN109857997B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105447122A (zh) * 2015-11-16 2016-03-30 中国人民解放军理工大学 一种基于多表关联可自主创建档案***的实现方法
CN107291848A (zh) * 2017-06-05 2017-10-24 南京邮电大学 基于Spark的并行化关联挖掘优化方法
CN107391621A (zh) * 2017-07-06 2017-11-24 南京邮电大学 一种基于Spark的并行关联规则增量更新方法
CN108242019A (zh) * 2016-12-26 2018-07-03 航天信息股份有限公司 基于spark的小规模纳税人年应税销售额的监控方法及***
CN108255838A (zh) * 2016-12-28 2018-07-06 航天信息股份有限公司 一种建立用于大数据分析的中间数据仓库的方法及***
CN108319604A (zh) * 2017-01-16 2018-07-24 南京烽火软件科技有限公司 一种hive中大小表关联的优化方法
CN108446375A (zh) * 2018-03-16 2018-08-24 湘潭大学 一种基于Spark平台的多尺度关联规则方法
EP3418919A1 (en) * 2017-06-23 2018-12-26 Palantir Technologies Inc. User interface for managing synchronization between data sources and cache databases
CN109189798A (zh) * 2018-09-30 2019-01-11 浙江百世技术有限公司 一种基于spark同步更新数据的方法
CN109213765A (zh) * 2018-08-20 2019-01-15 中国平安人寿保险股份有限公司 数据表关联的方法、装置、计算机设备和存储介质
CN109240654A (zh) * 2018-07-24 2019-01-18 武汉空心科技有限公司 基于模板的开发方法及***

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105447122A (zh) * 2015-11-16 2016-03-30 中国人民解放军理工大学 一种基于多表关联可自主创建档案***的实现方法
CN108242019A (zh) * 2016-12-26 2018-07-03 航天信息股份有限公司 基于spark的小规模纳税人年应税销售额的监控方法及***
CN108255838A (zh) * 2016-12-28 2018-07-06 航天信息股份有限公司 一种建立用于大数据分析的中间数据仓库的方法及***
CN108319604A (zh) * 2017-01-16 2018-07-24 南京烽火软件科技有限公司 一种hive中大小表关联的优化方法
CN107291848A (zh) * 2017-06-05 2017-10-24 南京邮电大学 基于Spark的并行化关联挖掘优化方法
EP3418919A1 (en) * 2017-06-23 2018-12-26 Palantir Technologies Inc. User interface for managing synchronization between data sources and cache databases
CN107391621A (zh) * 2017-07-06 2017-11-24 南京邮电大学 一种基于Spark的并行关联规则增量更新方法
CN108446375A (zh) * 2018-03-16 2018-08-24 湘潭大学 一种基于Spark平台的多尺度关联规则方法
CN109240654A (zh) * 2018-07-24 2019-01-18 武汉空心科技有限公司 基于模板的开发方法及***
CN109213765A (zh) * 2018-08-20 2019-01-15 中国平安人寿保险股份有限公司 数据表关联的方法、装置、计算机设备和存储介质
CN109189798A (zh) * 2018-09-30 2019-01-11 浙江百世技术有限公司 一种基于spark同步更新数据的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
BIRDLOVE1987: "spark: RDD与DataFrame之间的相互转换", 《HTTPS://WWW.JB51.NET/ARTICLE/141592.HTM》 *
牛仔裤的夏天: "《Spark Python API 官方文档中文版》 之 pyspark.sql (一)", 《HTTPS://WWW.CNBLOGS.COM/WONGLU/P/7784556.HTML》 *

Also Published As

Publication number Publication date
CN109857997B (zh) 2019-10-29

Similar Documents

Publication Publication Date Title
US9904522B2 (en) Web development system
US20130179863A1 (en) Bug variant detection using program analysis and pattern identification
CN105528418B (zh) 一种设计文档生成方法及装置
CN108256715B (zh) 一种工作流管理方法及***
CN106446019B (zh) 一种软件功能处理方法和装置
US8051408B1 (en) Method of providing interactive usage descriptions based on source code analysis
CN100362479C (zh) 基于自动化测试脚本对被测对象进行测试的方法和***
US8768913B2 (en) Multi-source searching in a data driven application
CN101876893A (zh) Web项目代码自动生成的方法
CN111008020A (zh) 将逻辑表达式解析为通用查询语句的方法
KR20130037995A (ko) 멀티테넌시를 지원하는 비즈니스 로직 설정방법
CN109857997B (zh) 一种离线表关联方法
CN108021423B (zh) 一种多语化网站生成方法、***以及计算机可读存储介质
CN111061469B (zh) Web前端源代码生成方法、装置、存储介质及处理器
CN106649095A (zh) 一种面向目标代码的程序静态分析***
JPH08263299A (ja) プログラム変換方法
CN104407853A (zh) 一种实现table多行同时编辑的方法
US10474443B2 (en) Code lineage tool
CN106250477B (zh) 一种分表数据的分页方法
JPH03241439A (ja) テストデータ作成ツール
CN110674355B (zh) 描述数据标注任务的dsl应用***及其方法
CN111026401A (zh) 一种移动端热修复方法
CN112579094B (zh) 一种基于模板代码匹配的轻量级热修复方法
CN104899018A (zh) 一种业务流程应用软件设计方法
CN109656619A (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
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: 7 / F, building B, 482 Qianmo Road, Xixing street, Binjiang District, Hangzhou City, Zhejiang Province 310000

Patentee after: Huoshi Creation Technology Co.,Ltd.

Address before: 7 / F, building B, 482 Qianmo Road, Xixing street, Binjiang District, Hangzhou City, Zhejiang Province 310000

Patentee before: HANGZHOU FIRESTONE TECHNOLOGY Co.,Ltd.

CP01 Change in the name or title of a patent holder