CN109857997A - 一种离线表关联方法 - Google Patents
一种离线表关联方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 19
- 230000005540 biological transmission Effects 0.000 claims description 3
- 238000012856 packing Methods 0.000 abstract description 2
- 241001269238 Data Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000005194 fractionation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
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)中,任务结束后,进行邮件的发送,告知页面操作者执行情况,包括表关联是否成功,有无异常等。
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)
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 | 武汉空心科技有限公司 | 基于模板的开发方法及*** |
-
2019
- 2019-02-02 CN CN201910108125.9A patent/CN109857997B/zh active Active
Patent Citations (11)
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)
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 |