CN113760836A - 一种宽表计算方法和装置 - Google Patents
一种宽表计算方法和装置 Download PDFInfo
- Publication number
- CN113760836A CN113760836A CN202110111625.5A CN202110111625A CN113760836A CN 113760836 A CN113760836 A CN 113760836A CN 202110111625 A CN202110111625 A CN 202110111625A CN 113760836 A CN113760836 A CN 113760836A
- Authority
- CN
- China
- Prior art keywords
- data
- single table
- wide
- operator
- data record
- 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
- 238000004364 calculation method Methods 0.000 title claims description 45
- 230000000875 corresponding Effects 0.000 claims abstract description 23
- 238000003860 storage Methods 0.000 claims description 74
- 238000001914 filtration Methods 0.000 claims description 17
- 230000000737 periodic Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 9
- 230000003993 interaction Effects 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 16
- 238000000605 extraction Methods 0.000 description 6
- 238000000034 method Methods 0.000 description 5
- 230000003287 optical Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 3
- 238000006011 modification reaction Methods 0.000 description 3
- 239000000835 fiber Substances 0.000 description 2
- 230000000644 propagated Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 210000003666 Nerve Fibers, Myelinated Anatomy 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 239000003365 glass fiber Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
Abstract
本发明公开了一种宽表计算方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:根据配置信息确定计算宽表所需的单表集合,当监听到产生与单表集合中单表对应的数据记录文件时,获取单表集合的单表数据,基于获取的单表数据计算得到宽表。该实施方式能够克服现有技术存在的仅实现了流式计算的框架而没有完整的宽表计算方案的缺陷,可通过共享文件的方式来实现宽表的计算,系统依赖简单,部署、运行快捷,计算逻辑可以复用,运维成本低。
Description
技术领域 本发明涉及计算机技术领域,尤其涉及一种宽表计算方法和装置。 背景技术 大数据时代,数据计算已经渗透到了各行各业。大数据的计算模式主要分为批量计算(batch computing)、流式计算(stream computing)等,分别适用于不同的大数据应用场景。对于先存储后计算,实时性要求不高,同时数据规模大、计算模型复杂的应用场景,更适合使用批量计算。对于无需先存储,可以直接进行数据计算,实时性要求严格,但单次计算涉及数据量相对较小的应用场景,流式计算具有明显优势。批量计算都是采用N+1方式,无法获取实时的最新的数据;流式计算以毫秒级的延迟实时对生产的数据进行加工,展现。这种实时计算的特性使得流式计算越来越受到各大公司的青睐。目前主流的流式计算框架有Storm、Spark Streaming、Flink三种,其中,Storm比较侧重极低延迟的流处理方式,Apache Spark是一种包含流处理能力的批处理框架,Flink是一种可以处理批处理任务的流处理框架。以上三种实现方案仅仅实现了流式计算的框架,没有完整的宽表计算方案;而且这些框架运行环境复杂,以Flink为例,需要配套的YARN或K8S等资源管理平台,在小项目中运维成本高昂。 在实现本发明过程中,发明人发现现有技术中至少存在如下问题: 现有技术的框架仅仅是提供了基础的运行环境,没有具体的业务实现,所有框架都有很严重的依赖体系,这些框架都是一整套大数据实现方案的一部分,整个系统运行繁琐,复杂,运维成本高。 发明内容 有鉴于此,本发明实施例提供一种宽表计算方法和装置,能够克服现有技术存在的仅实现了流式计算的框架而没有完整的宽表计算方案的缺陷,可通过共享文件的方式来实现宽表的计算,系统依赖简单,部署、运行快捷,计算逻辑可以复用,运维成本低。 为实现上述目的,根据本发明实施例的一个方面,提供了一种宽表计算方法。 一种宽表计算方法,包括:根据配置信息确定计算宽表所需的单表集合;当监听到产生与所述单表集合中单表对应的数据记录文件时,获取所述单表集合的单表数据;基于获取的所述单表数据计算得到所述宽表。 可选地,还包括:从底层存储设备抽取数据记录流,并将所述数据记录流中的数据记录存储为所述数据记录文件,所述数据记录包括所述单表的数据变化信息。 可选地,所述底层存储设备为数据库;所述从底层存储设备抽取数据记录流,包括:以所述数据库为主库,模拟从库的交互协议,伪装为所述从库以向所述主库发送转储请求;接收所述主库响应所述转储请求而推送的二进制日志数据流;解析所述二进制日志数据流,以得到所述数据记录流。 可选地,所述将所述数据记录流中的数据记录存储为所述数据记录文件,包括:当达到周期性时间点,或者,在相邻两个所述周期性时间点之间且所述数据记录的大小达到预设值时,将所述数据记录以二进制文件存储到预设的对象存储服务中。 可选地,所述数据记录文件的命名格式包括:当前时间戳、用于计算得到所述宽表的服务器序列号、所述数据记录文件的生成序号。 可选地,所述基于获取的所述单表数据计算得到所述宽表,包括:基于获取的所述单表数据,执行与所述宽表对应的算子链,所述算子链包括宽表组装算子,还包括过滤算子和/或数据存储算子,其中,所述宽表组装算子用于根据获取的所述单表数据组装得到所述宽表,所述过滤算子用于在组装得到所述宽表之前按照过滤策略对获取的所述单表数据进行过滤,所述数据存储算子用于将组装得到的所述宽表存储到指定存储位置。 可选地,通过服务器集群分布式计算得到所述宽表,所述算子链中的算子在所述服务器集群的一个或多个从节点执行。 可选地,所述配置信息和所述数据记录文件位于所述服务器集群的主节点,所述从节点通过周期性访问所述主节点,来监听是否产生与所述单表集合中单表对应的数据记录文件。 可选地,所述获取所述单表集合的单表数据,包括:从所述配置信息得到所述单表集合中单表之间的关联关系,根据所述关联关系获取所述单表集合的单表数据。 根据本发明实施例的另一方面,提供了一种宽表计算装置。 一种宽表计算装置,包括:单表确定模块,用于根据配置信息确定计算宽表所需的单表集合;单表数据获取模块,用于当监听到产生与所述单表集合中单表对应的数据记录文件时,获取所述单表集合的单表数据;宽表计算模块,用于基于获取的所述单表数据计算得到所述宽表。 可选地,还包括数据抽取模块和文件存储模块,其中:所述数据抽取模块用于从底层存储设备抽取数据记录流,所述文件存储模块用于将所述数据记录流中的数据记录存储为所述数据记录文件,所述数据记录包括所述单表的数据变化信息。 可选地,所述底层存储设备为数据库;所述数据抽取模块还用于:以所述数据库为主库,模拟从库的交互协议,伪装为所述从库以向所述主库发送转储请求;接收所述主库响应所述转储请求而推送的二进制日志数据流;解析所述二进制日志数据流,以得到所述数据记录流。 可选地,所述文件存储模块还用于:当达到周期性时间点,或者,在相邻两个所述周期性时间点之间且所述数据记录的大小达到预设值时,将所述数据记录以二进制文件存储到预设的对象存储服务中。 可选地,所述数据记录文件的命名格式包括:当前时间戳、用于计算得到所述宽表的服务器序列号、所述数据记录文件的生成序号。 可选地,所述宽表计算模块还用于:基于获取的所述单表数据,执行与所述宽表对应的算子链,所述算子链包括宽表组装算子,还包括过滤算子和/或数据存储算子,其中,所述宽表组装算子用于根据获取的所述单表数据组装得到所述宽表,所述过滤算子用于在组装得到所述宽表之前按照过滤策略对获取的所述单表数据进行过滤,所述数据存储算子用于将组装得到的所述宽表存储到指定存储位置。 可选地,通过服务器集群分布式计算得到所述宽表,所述算子链中的算子在所述服务器集群的一个或多个从节点执行。 可选地,所述配置信息和所述数据记录文件位于所述服务器集群的主节点,所述从节点通过周期性访问所述主节点,来监听是否产生与所述单表集合中单表对应的数据记录文件。 可选地,所述单表数据获取模块还用于:从所述配置信息得到所述单表集合中单表之间的关联关系,根据所述关联关系获取所述单表集合的单表数据。 根据本发明实施例的又一方面,提供了一种电子设备。 一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现本发明实施例所提供的宽表计算方法。 根据本发明实施例的又一方面,提供了一种计算机可读介质。 一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例所提供的宽表计算方法。 上述发明中的一个实施例具有如下优点或有益效果:根据配置信息确定计算宽表所需的单表集合,当监听到产生与单表集合中单表对应的数据记录文件时,获取单表集合的单表数据,基于获取的单表数据计算得到宽表。能够克服现有技术存在的仅实现了流式计算的框架而没有完整的宽表计算方案的缺陷,可通过共享文件的方式来实现宽表的计算,系统依赖简单,部署、运行快捷,计算逻辑可以复用,运维成本低。 上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。 附图说明 附图用于更好地理解本发明,不构成对本发明的不当限定。其中: 图1是根据本发明一个实施例的宽表计算方法的主要步骤示意图; 图2是根据本发明一个实施例的宽表计算装置的主要模块示意图; 图3是本发明实施例可以应用于其中的示例性系统架构图; 图4是适于用来实现本发明实施例的服务器的计算机系统的结构示意图。 具体实施方式 以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。 图1是根据本发明一个实施例的宽表计算方法的主要步骤示意图。 如图1所示,本发明一个实施例的宽表计算方法主要包括如下的步骤S101至步骤S103。 步骤S101:根据配置信息确定计算宽表所需的单表集合; 步骤S102:当监听到产生与单表集合中单表对应的数据记录文件时,获取单表集合的单表数据; 步骤S103:基于获取的单表数据计算得到宽表。 其中,数据库中一张物理表(table)即为单表。由两张或两张以上单表join(组成)的逻辑表即为宽表。 配置信息可以包括计算宽表所需的单表集合、单表集合中单表之间的关联关系等。 可以从底层存储设备抽取数据记录流,并将数据记录流中的数据记录存储为数据记录文件,数据记录包括单表的数据变化信息。 在一个实施例中,底层存储设备为数据库;从底层存储设备抽取数据记录流,具体可以包括:以数据库为主库,模拟从库的交互协议,伪装为从库以向主库发送转储请求(即dump请求);接收主库响应转储请求而推送的二进制日志数据流;解析二进制日志数据流,以得到数据记录流。 在一个实施例中,将数据记录流中的数据记录存储为数据记录文件,包括:当达到周期性时间点,或者,在相邻两个周期性时间点之间且数据记录的大小达到预设值时,将数据记录以二进制文件存储到预设的对象存储服务中。 数据记录文件的命名格式可以包括:当前时间戳、用于计算得到宽表的服务器序列号、数据记录文件的生成序号。 在一个实施例中,基于获取的单表数据计算得到宽表,包括:基于获取的单表数据,执行与宽表对应的算子链,算子链包括宽表组装算子,还包括过滤算子和/或数据存储算子,其中,宽表组装算子用于根据获取的单表数据组装得到宽表,过滤算子用于在组装得到宽表之前按照过滤策略对获取的单表数据进行过滤,数据存储算子用于将组装得到的宽表存储到指定存储位置。 在一个实施例中,可以通过服务器集群分布式计算得到宽表,算子链中的算子在服务器集群的一个或多个从节点执行。 配置信息和数据记录文件可位于服务器集群的主节点,从节点通过周期性访问主节点,来监听是否产生与单表集合中单表对应的数据记录文件。 在一个实施例中,获取单表集合的单表数据,具体可以包括:从配置信息得到单表集合中单表之间的关联关系,根据关联关系获取单表集合的单表数据。 本发明实施例的宽表计算方法可在单机上执行,也可以通过部署服务器集群(简称集群)来执行。下面以部署集群来执行本发明实施例的宽表计算方法为例进行介绍。集群包括主节点(Leader)、从节点(Follower),主节点和从节点中均有执行相应操作的算子(Operator)。计算宽表还需要使用数据源(Source)、底层存储设备(例如MySQL)等。 数据源(Source)是对数据获取源头的模拟,一张table(表)可是一个源,一份本地BinLog(二进制日志)文件也可以是一个源。数据源负责从底层存储设备抽取文件数据,并把二进制数据转换为Java内存对象。转化的Java内存对象以数据流(Stream)的方式在算子之间流转。抽取的文件数据可以是二进制日志数据流,其中包括底层存储设备中单表的数据变化信息,转化的Java内存对象数据流即对二进制日志数据流解析得到的数据记录流,数据记录流中的数据记录包括上述的单表的数据变化信息。数据源(Source)可以位于主节点上。 一个算子(Operator)是一个逻辑上的数据处理单元,比如过滤掉无效的数据是一个算子,数据的存储是另一个算子。算子通常成串的出现,成串的算子可称为算子链(operator chain),一条算子链组成一个宽表业务。实际在处理过程中为了增加系统的吞吐量,一个算子可能同时在多台服务器上并行执行。 主节点(Leader)为集群的Master节点(集群主节点),负责协调整个集群的任务管理和资源调配,具体如安排task(任务)、协调Follower(从节点)的服务器序列号、协调检查点(checkpoint)、协调故障恢复等。集群中至少有一个Leader。高可用架构下会有多个Leader:其中之一为事实上的领导者(leader),其他为候补(standby),leader发生故障时,standby转为leader。Leader还负责协调Source(数据源)读取数据信息(即数据记录流),Source(数据源)读取的数据记录流通过Storage Operator(文件存储算子)以有序的小文件存储,小文件是指大小不超过预设值;Leader协调Follower节点(从节点)执行各自的operator chain(算子链),以把最终计算获得到的宽表数据存储到ES(即Elasticsearch,是一个基于Lucene的搜索服务器)或者MySQL。文件存储算子可以把数据记录流以有序的小文件存到本地磁盘或者JSS中,其中JSS是一种对象存储服务,该服务可以存储、分发、控制企业生产中的各种数据,小到几字节,大到5T(太)字节。 从节点(Follower)为集群的计算节点,负责执行具体的operatorchain(算子链),算子链可以包括宽表组装算子、过滤算子、数据存储算子、缓存算子等。一个宽表任务必须至少一个Follower。Leader和Follower可以在独立服务器、容器或者资源管理框架中运行,然后Follower连接Leader并声明可用,进而被分配具体的宽表计算任务。 本发明实施例的宽表计算方法在单机上执行时,各部分与上述介绍类似,不同之处在于上述的主节点、从节点可以位于单个服务器中,具体可以通过多核(多个计算引擎)的形式实现,其中一核部署主节点、其他核部署从节点,本领域技术人员参照上文对集群的介绍可以在单机上实现本发明实施例的宽表计算方法,对此,不再赘述。 本发明实施例通过共享文件(本地文件或者JSS中文件)的方式来实现宽表的计算,系统依赖简单,部署、运行快捷,为中小型项目提供一种成本低廉的实现方案。 主流的数据库通常使用的是MySQL,下面以MySQL的Binlog(二进制日志)为例介绍本发明实施例的Source(数据源)的实现。Source(数据源)消费Binlog(二进制日志数据流)的逻辑具体如下:Source(数据源)模拟mysql slave(从库)的交互协议,伪装自己为mysqlslave(从库),向mysql master(主库,即底层存储设备的MySQL)发送dump(转储)请求;mysql master(主库)收到dump请求后,开始推送binary log(二进制日志)对象给slave,即向Source(数据源)推送二进制日志数据流;数据源根据Binlog协议(二进制日志协议)解析binary log对象(原始为byte流(字节流)),得到一条条的数据流对象,即数据记录流。 数据以流(即数据流对象)的方式一条条地在各个算子中流转,算子就是对流中数据(数据流对象)进行计算的逻辑单元,而只有一整条业务处理的算子链才是一个有意义的任务。 本发明一个实施例的一整条宽表计算的业务链条如下: 数据源(Source)负责打通底层存储设备,底层存储设备可以是MySQL、本地文件、Kafka(一种高吞吐量的分布式发布订阅消息系统)等等,本发明实施例以MySQL为例。Source负责把底层存储设备中的底层数据(例如单表的数据变化信息)抽取为数据流(streams),即数据记录流。后续算子操作流上的单条数据。 本发明实施例的算子可以包括文件存储算子、过滤算子、宽表组装算子、数据存储算子。 文件存储算子持续接收数据源的数据记录流,以30秒间隔(每到30秒则达到周期性时间点),且最大文件不超过64M(兆)(64M为预设值),将数据记录流中的数据记录顺序存储到JSS(一种对象存储服务)上。考虑到算子都是并发执行的,为了保证数据的顺序性,使同一个ID(标识)的数据总是被分配到一个服务器上,对此,可以使用求模的方式进行分片:主键ID%算子并发数量=被分配到的服务器序列号。存储的数据记录文件名的命名格式可以为:[当前时间戳]+1[服务器序列号]+0[30S内生成数据记录文件的序号].data,例如某一文件名为:20200916143330。由于存储的介质是多种多样的,文件存储算子需要提供统一的接口来存储、读取文件。存储数据记录文件的流程如下:文件存储算子所在的节点(即主节点)不停地接收数据记录流中的数据记录。每过30S(秒),文件存储算子把收集到的数据记录打包成二进制的数据记录文件,存储到本地磁盘或者JSS中,如果30S中收集到的数据大小达到64M,那么也将触发数据记录文件的存储操作,数据记录文件的序号+1。过滤算子用于清洗流中(即数据记录流中)的源数据(即对应的单表数据),各个业务过滤策略不尽相同。默认的过滤策略可以包括但不限于以下几种:1.过滤删除,即删除的数据不参与计算,从流中删除。2.过滤无效,即无效的数据不参与计算,从流中删除。3.其他自定义过滤策略。 宽表组装算子用于数据流转到该宽表组装算子时触发宽表计算,计算过程如下:一张宽表是由多张单表组成的,各个单表都是独立的业务链,单表数据执行完毕后数据保存到ES中,热点数据保存到Redis中,热点数据指的是最近预设时间段内的数据,例如近7天的数据。从节点负责具体的逻辑计算,从节点首先根据SQL分析出组装宽表W所需要的单表集合,例如单表A、B。SQL中组装宽表所需的单表集合是通过配置系统进行配置确定的,配置系统可以位于主节点,其中包括配置信息,配置信息可以包括计算宽表所需的单表集合、单表集合中单表之间的关联关系等。从节点通过不停的访问主节点(例如周期性访问),查询单表A或B是否有新的数据记录文件产生,即监听单表集合中单表对应的数据记录文件,如果没有就进行等待;如果存在新的数据记录文件,那么就按顺序获取主节点的JSS(一种对象存储服务)中的数据记录文件名。从节点根据获取到的数据记录文件名,获取到数据记录文件中存储的数据记录,然后根据单表A、B的关联关系反查Redis,以获取单表A、B的数据,把单表A、B的数据join(组成)为一条宽表数据;如果反查Redis不存在单表A、B的数据,那么就透传到ES中,如果ES中也不存在单表A、B的数据,那么说明数据还未从MySQL等源头流转过来,从节点则进入等待状态,一直到能获取到反查的单表A、B的数据。数据存储算子用于把最终的宽表数据保存到ES、MySQL、JDQ(一种消息中间件)中。 上述算子构成本发明实施例的整体算子链。其中,文件存储算子可以在主节点上执行,由宽表组装算子、过滤算子、数据存储算子所构成的算子链可以在一个或多个从节点执行。 图2是根据本发明一个实施例的宽表计算装置的主要模块示意图。 如图2所示,本发明一个实施例的宽表计算装置200主要包括:单表确定模块201、单表数据获取模块202、宽表计算模块203。 单表确定模块201,用于根据配置信息确定计算宽表所需的单表集合; 单表数据获取模块202,用于当监听到产生与单表集合中单表对应的数据记录文件时,获取单表集合的单表数据; 宽表计算模块203,用于基于获取的单表数据计算得到宽表。 宽表计算装置200还可以包括数据抽取模块和文件存储模块。 数据抽取模块用于从底层存储设备抽取数据记录流。 文件存储模块用于将数据记录流中的数据记录存储为数据记录文件,数据记录包括单表的数据变化信息。 在一个实施例中,底层存储设备为数据库。数据抽取模块具体可以用于:以数据库为主库,模拟从库的交互协议,伪装为从库以向主库发送转储请求;接收主库响应转储请求而推送的二进制日志数据流;解析二进制日志数据流,以得到数据记录流。 文件存储模块具体可以用于:当达到周期性时间点,或者,在相邻两个周期性时间点之间且数据记录的大小达到预设值时,将数据记录以二进制文件存储到预设的对象存储服务中。 数据记录文件的命名格式可以包括:当前时间戳、用于计算得到宽表的服务器序列号、数据记录文件的生成序号。 宽表计算模块203具体可以用于:基于获取的单表数据,执行与宽表对应的算子链,算子链包括宽表组装算子,还包括过滤算子和/或数据存储算子,其中,宽表组装算子用于根据获取的单表数据组装得到宽表,过滤算子用于在组装得到宽表之前按照过滤策略对获取的单表数据进行过滤,数据存储算子用于将组装得到的宽表存储到指定存储位置。 可以通过服务器集群分布式计算得到宽表,算子链中的算子在服务器集群的一个或多个从节点执行。 配置信息和数据记录文件可位于服务器集群的主节点。从节点通过周期性访问主节点,来监听是否产生与单表集合中单表对应的数据记录文件。 单表数据获取模块202可以从配置信息得到单表集合中单表之间的关联关系,根据关联关系获取单表集合的单表数据。 本发明实施例的宽表计算装置200可设置在单机(即单个服务器),也可以设置在服务器集群中,即分布式设置在多个服务器。以设置在服务器集群为例,单表确定模块201、数据抽取模块、文件存储模块可以设置在集群的主节点;单表数据获取模块202、宽表计算模块203可设置在集群的从节点。以设置在单机为例,在单机中可以通过多核的形式设置主节点和从节点,其中一核为主节点、其他核为从节点,然后与集群中设置宽表计算装置200的方式相同,在主节点和从节点分别设置宽表计算装置200的相关的模块。 另外,在本发明实施例中宽表计算装置的具体实施内容,在上面宽表计算方法中已经详细说明了,故在此重复内容不再说明。 图3示出了可以应用本发明实施例的宽表计算方法或宽表计算装置的示例性系统架构300。 如图3所示,系统架构300可以包括终端设备301、302、303,网络304和服务器305。网络304用以在终端设备301、302、303和服务器305之间提供通信链路的介质。网络304可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。 用户可以使用终端设备301、302、303通过网络304与服务器305交互,以接收或发送消息等。终端设备301、302、303上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。 终端设备301、302、303可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。 服务器305可以是提供各种服务的服务器,例如对用户利用终端设备301、302、303所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。 需要说明的是,本发明实施例所提供的宽表计算方法一般由服务器305执行,相应地,宽表计算装置一般设置于服务器305中。 应该理解,图3中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。 下面参考图4,其示出了适于用来实现本申请实施例的服务器的计算机系统400的结构示意图。图4示出的服务器仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。 如图4所示,计算机系统400包括中央处理单元(CPU)401,其可以根据存储在只读存储器(ROM)402中的程序或者从存储部分408加载到随机访问存储器(RAM)403中的程序而执行各种适当的动作和处理。在RAM 403中,还存储有系统400操作所需的各种程序和数据。CPU 401、ROM 402以及RAM 403通过总线404彼此相连。输入/输出(I/O)接口405也连接至总线404。 以下部件连接至I/O接口405:包括键盘、鼠标等的输入部分406;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分407;包括硬盘等的存储部分408;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分409。通信部分409经由诸如因特网的网络执行通信处理。驱动器410也根据需要连接至I/O接口405。可拆卸介质411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器410上,以便于从其上读出的计算机程序根据需要被安装入存储部分408。 特别地,根据本发明公开的实施例,上文参考主要步骤示意图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行主要步骤示意图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分409从网络上被下载和安装,和/或从可拆卸介质411被安装。在该计算机程序被中央处理单元(CPU)401执行时,执行本申请的系统中限定的上述功能。 需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。 附图中的主要步骤示意图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,主要步骤示意图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或主要步骤示意图中的每个方框、以及框图或主要步骤示意图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。 描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括单表确定模块、单表数据获取模块、宽表计算模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,单表确定模块还可以被描述为“用于根据配置信息确定计算宽表所需的单表集合的模块”。 作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:根据配置信息确定计算宽表所需的单表集合;当监听到产生与所述单表集合中单表对应的数据记录文件时,获取所述单表集合的单表数据;基于获取的所述单表数据计算得到所述宽表。 根据本发明实施例的技术方案,根据配置信息确定计算宽表所需的单表集合,当监听到产生与单表集合中单表对应的数据记录文件时,获取单表集合的单表数据,基于获取的单表数据计算得到宽表。能够克服现有技术存在的仅实现了流式计算的框架而没有完整的宽表计算方案的缺陷,可通过共享文件的方式来实现宽表的计算,系统依赖简单,部署、运行快捷,计算逻辑可以复用,运维成本低。 上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。