一种基于B2B商城的实时计算查询系统及方法与流程

文档序号:20948303发布日期:2020-06-02 19:59阅读:172来源:国知局
一种基于B2B商城的实时计算查询系统及方法与流程

本发明涉及大数据计算查询的技术领域,尤其是涉及一种基于b2b商城的实时计算查询系统及方法。



背景技术:

针对业务数据量比较大,需要采用大数据计算时,目前大多采用制定调度任务,按照指定时间点抽取业务数据,再针对业务场景制定计算模型进行离线计算,主要采用技术有:sqoop批量导入数据、hdfs批量存储数据、hive/mapreduce批量计算数据、hue任务调度、hplsql计算处理、impala查询引擎。

申请公布号为cn109766368a的中国专利公开了一种基于hive的数据查询多类型视图产出系统,包括:查询条件管理模块、查询结果管理模块、查询结果展示模块、自定义模板生成模块。该方案利用hive,对海量数据集进行统计分析,通过多输入手段和多输出方式,将数据仓库中的大数据集进行批量统计、挖掘和分析,从而为用户提供基于大数据的智能决策引导和手段,让用户认清现状、把握趋势。

上述中的现有技术方案存在以下缺陷:采用制定调度任务,按照指定时间点抽取业务数据,再针对业务场景制定计算模型进行离线计算,数据实时性不高;计算模型固定,例如:通过大数据计算客户成交金额、成交数量和最后成交时间,既定计算模型可能只能固定分别计算30天/60天/90天成交金额,业务部门针对计算结果再过滤哪部分客户需重点拜访,当有新品上线或有促销案执行或针对重点产品时,可能需要重点计算7天/10天或其他类型成交金额;数据粒度固定,例如:既定计算模型只能计算到客户的最小存货单位。



技术实现要素:

针对现有技术存在的不足,本发明的目的是提供一种基于b2b商城的实时计算查询系统及基于b2b商城的实时计算查询方法。

本发明的上述发明目的一是通过以下技术方案得以实现的:

一种基于b2b商城的实时计算查询系统,包括:

业务数据库:用于存储b2b商城的数据信息;

hdfs分布式存储系统;

kudu列式数据库:通过大数据平台与所述业务数据库保持同步,且与所述hdfs分布式存储系统进行映射;

前端web系统:用于录入数据,并将带有所述录入数据的请求信息通过大数据接口库转发;

实时采集转发单元:用于实时采集所述前端web系统通过大数据接口库转发的带有所述录入数据的请求信息并转发;

shell脚本:用于接收所述实时采集转发单元转发的请求信息后调用hpl/sql进行处理,其中,所述hpl/sql根据所述kudu列式数据库中的数据以及所述请求信息进行计算处理;以及

hive:用于存储所述hpl/sql的计算结果,并将所述计算结果推送到所述前端web系统。

通过采用上述技术方案,业务数据通过大数据平台实时收集入kudu列式数据库,保证了数据的及时性,用户的计算请求通过前端web系统实时录入提交,并通过大数据平台的运算能力,及时得到计算结果,用来支撑决策。

本发明在一较佳示例中可以进一步配置为:所述实时采集转发单元包括实时采集单元、实时消息转发单元和spark引擎,所述实时采集单元用于实时监测和采集所述大数据接口库转发的请求信息并通过所述实时消息转发单元转发到所述spark引擎,所述spark引擎调用python程序进行接收所述请求信息并转发到所述shell脚本中。

通过采用上述技术方案,所述实时采集单元用于实时监测和采集所述大数据接口库转发的请求信息并通过所述实时消息转发单元转发到所述spark引擎,所述spark引擎调用python程序进行接收所述请求信息并转发到所述shell脚本中。

本发明在一较佳示例中可以进一步配置为:所述实时采集单元为streamsets,所述实时消息转发单元为kafka。

通过采用上述技术方案,streamsets没有缓存的功能,只要有新的请求信息进来,就会放入一个kafka队列里。

本发明在一较佳示例中可以进一步配置为:还包括bi展示系统,用于根据所述计算结果提供报表并提出决策依据。

通过采用上述技术方案,bi展示系统是一套完整的解决方案,用来将企业中现有的数据进行有效的整合,快速准确的提供报表并提出决策依据,帮助企业做出明智的业务经营决策。

本发明的上述发明目的二是通过以下技术方案得以实现的:

一种基于b2b商城的实时计算查询方法,采用kudu列式数据库与hdfs分布式存储系统进行映射,且所述kudu列式数据库中的数据通过大数据平台与业务数据库保持同步;前端web系统录入数据后将带有所述录入数据的请求信息通过大数据接口库发送到实时采集转发单元;shell脚本接收所述实时采集转发单元转发的请求信息后调用hpl/sql,所述hpl/sql根据所述kudu列式数据库中的数据以及所述请求信息进行计算处理并将计算结果存储于hive中,前端web系统接收并应用所述计算结果。

通过采用上述技术方案,业务数据通过大数据平台实时收集入kudu列式数据库,保证了数据的及时性,用户的计算请求通过前端web系统实时录入提交,并通过大数据平台的运算能力,及时得到计算结果,用来支撑决策。

本发明在一较佳示例中可以进一步配置为:所述实时采集转发单元包括实时采集单元、实时消息转发单元和spark引擎,所述实时采集单元用于实时监测和采集所述大数据接口库转发的请求信息并通过所述实时消息转发单元转发到所述spark引擎,所述spark引擎调用python程序进行接收所述请求信息并转发到所述shell脚本中。

通过采用上述技术方案,所述实时采集单元用于实时监测和采集所述大数据接口库转发的请求信息并通过所述实时消息转发单元转发到所述spark引擎,所述spark引擎调用python程序进行接收所述请求信息并转发到所述shell脚本中。

本发明在一较佳示例中可以进一步配置为:在计算结束后,所述shell脚本将所述计算结果中的至少一个信息返回至所述spark引擎。

通过采用上述技术方案,返回至所述spark引擎的计算结果用于更新接口表中的完成标记等信息。

本发明在一较佳示例中可以进一步配置为:所述请求信息至少包括会话id以及前端web系统的录入数据。

通过采用上述技术方案,会话id是唯一的,引入会话id有利于对各个请求信息及其处理计算结果进行分类处理和存储。

本发明在一较佳示例中可以进一步配置为:所述前端web系统的录入数据包括至少一个客户静态标签和至少一个商品静态标签。

通过采用上述技术方案,实现根据客户静态标签和商品静态标签两个维度中的任意静态标签的自由组合,而得到相应的计算动态标签结果。

本发明在一较佳示例中可以进一步配置为:所述计算结果还发送到bi展示系统进行bi展示。

通过采用上述技术方案,bi展示系统是一套完整的解决方案,用来将企业中现有的数据进行有效的整合,快速准确的提供报表并提出决策依据,帮助企业做出明智的业务经营决策。

综上所述,本发明包括以下至少一种有益技术效果:

1.业务数据通过大数据平台实时收集入kudu列式数据库,保证了数据的及时性;

2.用户的计算请求通过前端web系统实时录入提交,并通过大数据平台的运算能力,及时得到计算结果,用来支撑决策;

3.超大数据量运算的响应能力,提升对数据的响应时间。

附图说明

图1是本发明的系统原理框图;

图2是本发明的方法流程图;

图3是本发明一实施例的方法流程图;

图4是本发明客户和商品维度的静态标签和动态标签示意图;

图5是本发明模型主题定义档接口范例示意图;

图6是本发明模型资料档接口范例示意图;

图7是本发明模型列筛选值接口范例示意图;

图8是本发明前端web系统的录入界面示意图;

图9是本发明模型计算请求档接口范例示意图。

具体实施方式

以下结合附图对本发明作进一步详细说明。

名词解释:

hpl/sql全称为proceduralsqlonhadoop,为hive提供了存储过程的支持扩展;

hive是基于hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在hadoop中的大规模数据的机制;

shell脚本与windows/dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的;

kafka是一种高吞吐量的分布式发布订阅消息系统;

streamsets是一款大数据实时采集和etl工具,可以实现不写一行代码完成数据的采集和流转。etl是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据,etl是bi(商业智能)项目重要的一个环节;

apachekudu是由cloudera开源的存储引擎,可以同时提供低延迟的随机读写和高效的数据分析能力;它是一个融合hdfs和hbase的功能的新组件,具备介于两者之间的新存储组件;

bi(businessintelligence)即商业智能,它是一套完整的解决方案,用来将企业中现有的数据进行有效的整合,快速准确的提供报表并提出决策依据,帮助企业做出明智的业务经营决策。

参照图1,为本发明公开的一种基于b2b商城的实时计算查询系统,包括:

业务数据库:用于存储b2b商城的数据信息;

hdfs分布式存储系统;

kudu列式数据库:通过大数据平台与所述业务数据库保持同步,且与所述hdfs分布式存储系统进行映射;

前端web系统:用于录入数据,并将带有所述录入数据的请求信息通过大数据接口库转发;

实时采集转发单元:用于实时采集所述前端web系统通过大数据接口库转发的带有所述录入数据的请求信息并转发;

shell脚本:用于接收所述实时采集转发单元转发的请求信息后调用hpl/sql进行处理,其中,所述hpl/sql根据所述kudu列式数据库中的数据以及所述请求信息进行计算处理;以及

hive:用于存储所述hpl/sql的计算结果,并将所述计算结果推送到所述前端web系统。

继续参照图1,所述实时采集转发单元包括实时采集单元、实时消息转发单元和spark引擎,所述实时采集单元用于实时监测和采集所述大数据接口库转发的请求信息并通过所述实时消息转发单元转发到所述spark引擎,所述spark引擎调用python程序进行接收所述请求信息并转发到所述shell脚本中。优选的,所述实时采集单元为streamsets,所述实时消息转发单元为kafka;还包括bi展示系统,用于根据所述计算结果提供报表并提出决策依据。

参照图2,为本发明公开的一种基于b2b商城的实时计算查询方法,采用kudu列式数据库与hdfs分布式存储系统进行映射,且所述kudu列式数据库中的数据通过大数据平台与业务数据库保持同步;前端web系统录入数据后将带有所述录入数据的请求信息通过大数据接口库发送到实时采集转发单元;shell脚本接收所述实时采集转发单元转发的请求信息后调用hpl/sql,所述hpl/sql根据所述kudu列式数据库中的数据以及所述请求信息进行计算处理并将计算结果存储于hive中,前端web系统接收并应用所述计算结果。

继续参照图2,所述实时采集转发单元包括实时采集单元、实时消息转发单元和spark引擎,所述实时采集单元用于实时监测和采集所述大数据接口库转发的请求信息并通过所述实时消息转发单元转发到所述spark引擎,所述spark引擎调用python程序进行接收所述请求信息并转发到所述shell脚本中。

参照图3,所述实时采集单元为streamsets,所述实时消息转发单元为kafka。

在计算结束后,所述shell脚本将所述计算结果中的至少一个信息(例如:计算结束时间,计算完成标记,计算成功与否标记,计算结果行数,计算关键输出信息)返回至所述spark引擎,并回写计算请求提交的接口表,更新接口表中的完成标记等信息。所述请求信息至少包括唯一的会话id以及前端web系统的录入数据。所述前端web系统的录入数据包括至少一个客户静态标签和至少一个商品静态标签。所述计算结果还发送到bi展示系统进行bi展示。

对于业务变化更新快、数据量大的业务表,例如订单等,对mysql或oracle业务数据库中的增删改查日志数据同步进入大数据平台的kudu列式数据库中。

模型功能需求:要求模型能实现计算按客户静态标签+商品静态标签两个维度中的任意静态标签自由组合,而得到相应的计算动态标签结果。参照图4,客户静态标签包括:区域/行政省/地级市/区县、商家、渠道客户/非商家/b、渠道客户分类、渠道客户区域、渠道客户级别、是否商家、是否启用等;商品静态标签包括:商品品牌、商品编码、商品分类、产品线、外箱条形码、入数、辅计里单位(杯、碗、五合一)等。计算动态标签结果包括从未成交的客户或客户数、复合成交客户或客户数(即成交多个商品品牌)、最近一次成交时间、成交品项及品项个数、成交频次、客户总数、gmv(成交总额)、成交箱数、成交金额等。计算动态标签结果在模型建立时确定,每次计算都会计算所有这些结果列。

面向主题的模型定义:根据用户需求场景,定义出模型主题,包括主题中使用到的维度资料、静态标签、业务数据、计算规则、计算结果度量列等。并将此部分资料放入模型接口表中,以供用户自定义选择。

参照图5,模型主题定义档:包括模型代号(model_theme)、模型主题名称(model_name)、模型创建时间、是否启用、模型每次任务提交计算预估时长(esti_duration),模型计算输出结果表(dest_tab_name),模型报表查看url地址(report_url)。

参照图6,模型资料档:此计算模型包括模型代号、模型使用维度表/业务数据表表名(tab_name)、维度表/业务数据表说明、标签字段名(col_name)、标签类别(col_class静态/动态)、标签字段类型、标签字段说明与描述、标签使用范例(用做过滤时)、是否为查询/过滤条件/二次筛选字段、标签排序代号;通过模型主题代号查询此计算模型的相关资料。

参照图7,模型列筛选值:此计算模型资料中的静态标签在供用户在提交计算请求时,可筛选的具体值;通过模型代号、表名、列名查询相关资料。

参照图8,根据上述的模型定义资料(包括面向主题的模型定义、模型主题定义档、模型资料档、模型列筛选值),开发前端web系统的录入界面,即用户实时请求提交操作界面。用户可自行选择需计算汇总的结果列,如需计算“华南/华东区的上海/广东/广西的2019年11月4日至今的从未成交客户数、复合成交、最近一次成交时间、成交品项及品项个数、成交次数、gmv”的前端web页面。

参照图9,模型计算请求档:依据约定要求,将会话id,需要查询的结果列,需要限制的查询条件,以及需要基于运算结果的动态标签二次过滤的筛选条件写入接口表中。

写入接口表时需要将用户在计算请求页面提交的具体计算值,包括会话id(session_id)、模型主题(model_theme)、需计算汇总的结果列(qry_columns)、需计算的数据范围where条件(qry_where)、需对动态标签二次筛选having条件(qry_having)、计算请求提交时间(cre_time)、报表需查询的列(qry_columns_rep),提交至模型计算请求提交接口。完成标记(completed)、完成时间(complete_time)、计算是否成功标记(sucess)、计算结果行数(num_rows)、计算关键输出信息(run_message)由计算完成时回写。汇总的结果列(qry_columns)、需计算的数据范围where条件(qry_where)两个字段的值在提交请求写入时需按照模型资料档中的表别名+列名格式传入,模型计算请求档接口范例如图9所示。

通过streamsets工具实时监控模型计算请求接口表,steamsets是一个数据收集器,是一个轻量级可视化的数据流构建工具,它使用datacollector在数据流中路由和处理数据,在为datacollector定义数据流并配置好管道后,“数据收集器”开始工作,如有新的计算任务提交,steamsets将监控到mysql的接口表中的变化,并将此数据提交至kafka消息队列中。

kafka是一种高吞吐量的分布式发布订阅消息系统,它负责将数据从一个应用传递到另外一个应用,应用只需关注于数据,无需关注数据在两个或多个应用间是如何传递的;数据生产者streamsets将请求的相关数据发布至发布到指定的topic中,并交由订阅此topic的消息的消费者(consumers)进行处理。

通过spark+python监控kafka消息队列并获取队列中的数据,sparkstreaming是一种实时流式数据处理机制,用于实时处理实时产生的数据流,它支持编写python代码;通过python代码将kafka消息队列中的数据读出,读出结果为json格式数据,即key:value模式。对json数据进行扁平化处理,即拼接为行,至此完成从mysql实时计算请求接口至大数据计算平台的数据传输。

spark+python获取到计算请求数据后,对每一个计算请求数据调用大数据平台的shell计算脚本,并将接口表中的会话id(session_id)、模型主题(model_theme)、需计算汇总的结果列(qry_columns)、需计算的数据范围where条件(qry_where)、需对动态标签二次筛选having条件(qry_having)做为参数传入shell计算脚本。

linuxshell计算脚本对参数进行解析,shell脚本的功能就是将许多linux指令汇整写一起,可以能够一个操作执行多个命令;脚本对需计算的数据范围where条件(qry_where)进行拆解,如多个表的过滤条件进行拆分与合并,保证计算模型中的每个表都有自己单独where参数;拆解完成后将拆解后的参数传入并调用hplsql计算脚本,同时在hplsql计算完成后对hplsql计算脚本的计算过程中的输出参数进行解析,并传回至spark。

hplsql计算脚本计算:基于hplsql编写的pl/hql(hpl/sql–proceduralsqlonhadoop),它是基于大数据hive数据库的存储过程的解决方案,它通过命令行工具来执行一个sql查询语句或者是一个sql脚本。在hplsql中通过sql语句实现对表数据的分析统计,因每次统计都是动态的,故sql语句中只编写业务数据表的关联、动态标签的计算汇总,select的查询列与where条件为动态保留部分;在计算脚本被调用时,将传入的参数与关键业务sql进行sql拼接,形成完整的统计分析计算sql,来完成数据表的统计分析与计算。

通过impala接口执行hplsql计算过程,对实时收集的业务表(即kudu列式数据库实时业务表)中的数据进行计算,impala是基于内存进行计算,能够对pb级数据进行交互式实时查询、分析的一种大数据计算引擎,它的特点就是计算速度非常快,但同时也需要强大的内存作为支撑。

在hplsql中,将整个计算脚本的最终计算结果数据,以会话id为唯一标识,写入指定的hive结果表中。

在计算结束后,shell脚本将计算结束时间、计算完成标记、计算成功与否标记、计算结果行数、计算关键输出信息返回至spark;并回写计算请求提交的接口表,更新接口表中的完成标记等信息。

计算完成后,用户在前端web应用界面,根据查看最近提交的请求列表,找到最近提交的请求,如为已完成状态,则点击查看按扭,系统根据会话请求的会话id(sessionid),跳转至bi系统进行报表查看。

举例来说:从前端web系统录入需查询的列以及需限制的条件,比如需要计算到“行政省+品牌”级别:华南区最近90天内的成交金额,最近一次成交时间;那前端web系统录入的就是选择“行政省,品牌列”,过滤条件是华南区及订单时间范围90天内。请求信息是通过api插入mysql数据库,有一个唯一的会话id,该唯一的会话id会被实时采集单元streamsets监控到,streamsets没有缓存的功能,只要有新的请求信息进来,就会放入一个实时消息转发单元的kafka队列里,spark引擎也是实时一直在运行的,spark引擎调用了一个python程序,该python程序会监控kafka消息队列,kafka消息队列里有消息进来,该python程序就会根据消息队列里的会话id加上api库里的查询及过滤参数,调用linux操作系统的shell脚本,shell脚本中会对这些传进来的参数进行处理(这里的处理指的是,会对传进来的参数拆分,比如查询条件涉及到几个表,会拆分成几个参数,还有定义一些输出的参数,比如统计运行sql是否成功,完成时间,统计分析产生了多少行结果,这些都是输出参数),处理后的参数传到大数据的hive数据库,sql编写的过程即hpl/sql。hpl/sql是类sql的脚本代码,主要用来统计分析,脚本里接收传进来的参数并计算,再将计算结果按当次会话id插入到结果表;当前会话的结果就可以通过bi报表来查看分析。

本具体实施方式的实施例均为本发明的较佳实施例,并非依此限制本发明的保护范围,故:凡依本发明的结构、形状、原理所做的等效变化,均应涵盖于本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1