CN113590667A - 一种基于Spark Streaming的实时数据更新及管理方法 - Google Patents
一种基于Spark Streaming的实时数据更新及管理方法 Download PDFInfo
- Publication number
- CN113590667A CN113590667A CN202110600651.4A CN202110600651A CN113590667A CN 113590667 A CN113590667 A CN 113590667A CN 202110600651 A CN202110600651 A CN 202110600651A CN 113590667 A CN113590667 A CN 113590667A
- Authority
- CN
- China
- Prior art keywords
- data
- hive
- information
- kafka
- metadata
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24578—Query processing with adaptation to user needs using ranking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
Abstract
本发明提出了一种基于Spark Streaming的实时数据更新及管理方法,包括:进行配置资源的参数配置;建立元数据信息库表;解析Kafka数据的源参数,获取实时数据更新;读取元数据信息库中的元数据信息,包括读取元数据信息库中的Kafka数据的描述信息,和,更新元数据信息库中对应元数据后读取;修改hive数据信息;读取Kafka数据,对读取到的批次的Kafka数据进行分区,按照分区将Kafka数据解析映射为数据库表。该实时数据存储及管理方法在新增任务只需要修改元数据信息,新建hive表,SparkStreaming同步元数据信息获取数据新增和变化,把Kafka数据一一解析对应hive的数据类型,数据写入hive并同时更新对应数据的offset信息。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种基于Spark Streaming的实时数据更新及管理方法。
背景技术
“数据智能”(Data Intelligence)有一个必须且基础的环节,就是数据仓库的建设,同时,数据仓库也是公司数据发展到一定规模后必然会提供的一种基础服务。从智能商业的角度来讲,数据的结果代表了用户或设备的反馈,获取结果的及时性就显得尤为重要,快速的获取数据反馈能够帮助公司更快的做出决策,更好的进行产品迭代,实时数仓在这一过程中起到了不可替代的作用。
现有技术中建立的实时数仓主要是对流量数据做实时ETL (Extraction-Transformation-Loading,数据抽取、转换和加载),并不计算实时指标,也未建立起实时数仓体系,实时场景比较单一,对实时数据流的处理是为了提升数据平台的服务能力。实时数据的处理向上依赖数据的收集,向下关系到数据的查询和可视化。第一部分是数据采集,由三端SDK采集数据并通过Log Collector Server发送到Kafka。第二部分是数据ETL,用于完成对原始数据的清洗和加工并分实时和离线导入Druid。第三部分是数据可视化,由Druid负责计算指标并通过Web Server配合前端完成数据可视化。
上述实时数仓存在新增Kafka topic需要新增代码重新部署上线的问题,而新增代码重新部署上线由于环境的不确定性、构件的来源多样性等原因,软件部署存在很大的风险,在部署过程中需要关注构建之间下相依、协调,部署过程的可变更性,与互联网的集成和安全性等问题,部署过程复杂且难度大,耗时久,而实时数仓在应用过程中对于Kafkatopic的新增需求多。可见现有的实时数仓存在的缺点将导致在如今实时场景复杂、数据流更新快的情况下,实时数仓无法保证Kafka topic更新的实时性。
发明内容
有鉴于此,为了克服上述现有技术的缺陷,本发明提出了一种基于SparkStreaming的实时数据更新及管理方法。
具体地,所述基于Spark Streaming的实时数据更新及管理方法包括:
进行配置资源的参数配置;
建立元数据信息库表;
解析Kafka数据的源参数;
读取元数据信息库中的元数据信息,包括读取所述元数据信息库中的所述 Kafka数据的描述信息,和,更新所述元数据信息库中对应元数据后读取;
修改hive数据信息;
读取所述Kafka数据,对读取到的批次的所述Kafka数据进行分区,按照所述分区将所述Kafka数据解析映射为数据库表。
进一步,还包括元数据信息库的创建:数据转发中心接受设备终端产生的数据并分类,然后根据预先建立的所述元数据信息库表创建所述元数据信息库;
其中,所述“根据预先建立的所述元数据信息库表创建元数据信息库”包括:
读取hive表数据,然后获取该数据的schema信息,将该schema信息写入元数据信息库中的hive表字段描述信息表中;
读取所述hive表字段描述信息表中数据库名等于和表名等于执行所述配置资源的参数配置时的数据库名和表名的所有数据;
循环遍历每一条数据,根据对应的fieldType类型做匹配,根据匹配规则组建单个StructField数据,然后组件整个表对应的Struct Schema信息。
所述“更新所述元数据信息库中对应元数据后读取”包括:
更新所述元数据信息库,然后读取对应元数据信息,并作为广播变量进行广播;
其中,所述广播变量的更新包括:
获取当前系统执行时间;获取前次hive schema更新时间;
若所述当前系统时间的分钟数除以10余数大于1且所述当前系统时间减去所述前次hive schema更新时间大于10分钟则执行hive schema信息更新;
获取当前最新的元数据信息库中的修改hive数据结构描述信息表中该任务相关的sql语句并执行所述sql语句;
更新Kafka数据描述信息表中的对应表的字段信息和更新hive表字段描述信息表中的对应表中的字段类型信息;
获取所述Kafka数据描述信息表和所述hive表字段描述信息表中更新后的数据;
清除Spark broadcast的数据,然后重新对Spark broadcast的数据进行赋值。
所述“修改hive数据信息”包括:包括:修改所述hive数据的结构描述信息;和,判断所述hive数据是否具备更新条件,当所述hive数据具备更新条件时执行前序数据更新操作;当所述hive数据信息不具备更新条件,则执行后续读取所述Kafka数据解析映射操作。其中,所述hive数据的更新条件为:当前系统执行时间与前次所述系统执行时间间隔十分钟,且hive数据结构描述信息表不为空。
所述“按照所述分区将所述Kafka数据解析映射为数据库表”包括:
获取某个所述分区的全部数据;
构建一个和hive字段信息一样长的array数组;
将所述分区的数据进行Json解析得到hash类型数据,并按照hive中该字段的位置放入array中对应的位置;
将array数据序列化;
所述分区的数据生成RDD[Row];
所述分区的数据生成的RDD[Row]和struct schema信息构建成Spark的DataFrame数据,随后写入hive数据库中的对应表中。
所述“构建一个和hive字段信息一样长的array数组;将该分区的数据进行Json解析得到hash类型数据,并按照hive中该字段的位置放入Array中对应的位置;将array数据序列化”进一步包括:
将Json数据解析为hashmap结构,根据key获取对应的数据记为hashmap;
从Hive表字段描述信息表中获取对应表的所有字段的数据结构,组合成一个hashmap数据记为hashmapSchema;
将Kafka数据描述信息表中记录的hive建表语句的按顺序字段信息构建数组记为array;
创建一个数据长度和array一样的数组记为arrayValue;
循环array中的每一个值、获取hashmap中的key对应的value、获取hashmapSchema中的key对应的value,将hashmap中获取到的值转化为 hashmapSchema中获取的数据类型的数据,然后赋值给此时arrayValue中相同位置的数据;
将arrayValue转化为序列化的Row类型。
优选地,还包括:每个分区数据处理完毕后判断所述批次的所述Kafka数据是否处理完毕;
若判断结果为是,则读取下一批次数据进行处理;若判断结果为否,则读取其余分区数据进行处理。
本发明还提供了一种实时数据存储及管理方法系统,用于执行上述实时数据存储及管理方法的数据处理,包括:
参数配置模块:用于在可视化面板进行配置资源的参数配置;
元数据库构建模块:用于建立元数据库信息;
参数解析模块:用于解析Kafka数据源参数;
元数据获取模块:用于读取元数据信息库中的元数据信息;
hive数据信息修改模块:用于修改hive数据结构信息及相关数据;
Kafka数据批次处理模块:用于读取所述Kafka数据及相关信息,按照数据获取的批次对读取到的所述Kafka数据进行分区,按照所述分区对数据进行解析映射处理。
所述Kafka数据批次处理模块还包括:
Kafka数据解析映射模块:用于将一个批次的所述Kafka数据的每个所述分区解析映射为数据库表。
优选地,还包括:
判断模块:用于在将一个所述分区的数据处理完毕后,判断所述批次数据是否处理完毕:若判断结果为是,则读取下一批次数据进行处理;若判断结果为否,则获取该批次数据的其余的所述分区的数据进行处理。
综上所述,本发明的实时数据存储及管理方法在新增字段、新增或删除kafkatopic之后数据同步至元数据信息库,Spark Streaming同步元数据信息获取数据新增和变化,然后解析的时候自动添加新增的数据达到自动感知的自动化处理。该实时数据存储及管理方法在新增任务只需要修改元数据信息,新建hive表,代码会自动更新元数据信息库中hive元数据信息,把Kafka数据一一解析对应hive的数据类型,数据写入hive并同时更新对应数据的offset 信息。通过简单配置Kafka数据和hive数据映射信息可快速实现测试、开发、部署上线任务。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的基于Spark Streaming的实时数据更新及管理方法的元数据更新架构示意图;
图2为本发明的基于Spark Streaming的实时数据更新及管理方法的数据处理流程描述示意图;
图3为运用本发明的基于Spark Streaming的实时数据更新及管理方法的数据处理流程的实时数据存储及管理方法系统的结构示意图;
图4为本发明的基于Spark Streaming的实时数据更新及管理方法应用到一种计算机设备的示意图。
附图标记:
1-计算机设备;11-处理单元;12-系统存储器;13-总线;2-外部设备。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种基于Spark Streaming的实时数据更新及管理方法,其系统包括数据采集模块和数据处理模块两大主要模块。数据采集模块,即读取Kafka数据的多个topic数据写入元数据信息库中,如hive、ES、Druid、 MySQL等。数据处理模块可应对绝大多数Kafka数据的复杂数据类型解析映射为数据库表,单次多读取Kafka数据,可大量节省机器处理资源,新增任务上线只需简单初始化元数据资源,实时任务调度信息不需要对代码做任何修改即可实现快速部署上线。
本发明的实时数据存储及管理方法包括:数据转发中心(Skyway IOT) 用于接收设备终端产生的数据并分类:数据转发中心对设备终端进行权限验证确保设备终端具备权限进行数据上报,验证通过的设备终端所发送的数据被数据转发中心接收,对接收的数据进行分类后将同种数据写入相同的topic 中。先根据预先建立的元数据信息库表创建元数据信息库,然后读取之前创建的元数据信息库的全量数据,并作为广播变量进行广播,此时程序开始读取Kafka数据,读取到的数据都会有单独的topic信息,不同的topic数据进行不同的数据处理。
参见说明书附图1,为元数据更新示意图。数据转发中心与数据库之间进行数据交互,先根据预先创建的hive数据库对应的表创建元数据信息库,然后读取之前创建的元数据信息库中的全量数据并作为广播变量进行广播。
元数据信息包括四张表,其中,sdx_hive_table_schema_dec记录hive表字段描述信息,其数据结构如表1所示:
名 | 类型 | 长度 | 小数点 | 不是null | 虚拟 | 键 | 注释 |
db | varchar | 255 | 0 | √ | □1 | 数据库名 | |
tb | varchar | 255 | 0 | √ | □2 | 表名 | |
fieldname | varchar | 255 | 0 | √ | □3 | 字段名 | |
fieldtype | varchar | 1000 | 0 | √ | 字段类型 |
表1 sdx_hive_table_schema_dec数据结构
sdx_Kafka_hive_eventname记录Spark消费的Kafka topic的描述信息,其数据结构如表2所示:
表2 sdx_Kafka_hive_eventname数据结构
sdx_partition_offset记录Spark消费Kafka的topic的offset的偏移量,其数据结构如表3所示:
名 | 类型 | 长度 | 小数点 | 不是null | 虚拟 | 键 | 注释 |
topic | varchar | 128 | 0 | √ | |||
partitionid | int | 16 | 0 | √ | |||
offset | varchar | 255 | 0 | √ | |||
createtime | datetime | 0 | 0 | √ | |||
consumergroup | varchar | 255 | 0 | √ | |||
MySQLstatus | int | 16 | 0 | √ | |||
hivestatus | int | 16 | 0 | ||||
eventname | varchar | 255 | 0 |
表3 sdx_partition_offset
sdx_hive_table_add_columns表为修改hive数据结构的描述信息。
实施例1
本实施例提供了一种基于Spark Streaming的实时数据更新及管理方法的数据处理流程。该方案开始执行之前首先需要在可视化面板进行配置资源的参数配置,具体的配置信息包括:
a.任务名:即事件名,该信息和数据中eventname信息相对应,即值相同;
b.Kafka数据源:Kafka topic name即Kafka的topic名字;
c.Kafka分区数:Kafka topic对应的分区数目;
d.目标数据库:db目标数据库名;
e.目标表:tb目标表名
f.isevent:是否为Kafka数据流,1为是,0为否。
配置信息保存时会在元数据信息表sdx_Kafka_hive_eventname同步插入一条信息,此时fieldnames字段信息为空。例如:INSERT INTO `sage_task_metadata`.`sdx_kafka_hive_eventname`(`eventname`,`db`,`tb`, `topicname`,`partitions`,`isevent`)VALUES('app_installation','ods_sdx_safe', 'ods_sdx_app_installation','sdb_sdx_app_installation',1,0)。
创建hive表。例:create table ods_sdx_safe.ods_sdx_app_installation(idint,name string)PARTITIONED BY(subregion string)。
参见说明书附图2,为本实施例的实时数据存储及管理方法数据处理流程描述示意图。具体地,该实时数据存储及管理方法的数据处理流程包括如下步骤:
S1:启动Spark Streaming程序,进行初始化配置:初始化SparkSession,初始化配置资源conf中的配置参数。在本实施例中具体包括:动态资源配置为:
--conf Spark.Streaming.dynamicAllocation.enabled=true\
--conf Spark.Streaming.dynamicAllocation.minExecutors=1\
--conf Spark.Streaming.dynamicAllocation.maxExecutors=6\
S2:解析Kafka数据源参数。在本实施例中,任务执行必须参数包括:
args(0)SparkStreaming seconds
args(1)consumerGroup
args(2)MySQLEnvironment
args(3)hiveEnvironment
其中,SparkStreaming second:定义多长时间处理一次数据流创建一个StreamingContext对象;consumerGroup:同系统可采用不同的消费者组来消费同样的数据来区分线上测试、开发、生产;MySQLEnvironment:不同的平台部署依赖的外部metadata环境不一致,通过参数来指定环境,只需要输入环境识别值;hiveEnvironment:根据指定的环境参数来确定数据进入那个库。
S3:读取元数据信息库中的元数据信息,包括:读取元数据信息库中的 Kafka数据的描述信息,和更新元数据信息库中对应元数据后获取。
在本实施例中,具体包括:
S31:更新元数据信息库,然后读取对应元数据信息,并作为广播变量进行广播。具体执行流程为:自动获取sdx_Kafka_hive_eventname中isevent为 1且eventname为app_installation的数据,做以下操作:
S311:删除sdx_hive_table_schema_dec中相同的db、tb下的所有数据;
S312:根据hive中对应库表的结构信息重新追加写入 sdx_hive_table_schema_dec,此时该表中插入三条数据;即:
INSERT INTO`sage_task_metadata`.`sdx_hive_table_schema_dec`(`db`,`tb`, `fieldname`,`fieldtype`)
VALUES('ods_sdx_safe','ods_sdx_app_installation','id','IntegerType');
INSERT INTO`sage_task_metadata`.`sdx_hive_table_schema_dec`(`db`,`tb`, `fieldname`,`fieldtype`)
VALUES('ods_sdx_safe','ods_sdx_app_installation','name','StringType');
INSERT INTO`sage_task_metadata`.`sdx_hive_table_schema_dec`(`db`,`tb`, `fieldname`,`fieldtype`)
VALUES('ods_sdx_safe','ods_sdx_app_installation','subregion','StringType');
S313:更新sdx_kafka_hive_eventname中的fieldnames值,此时该值变为:id,name,subregion。
S32:读取更新后的Kafka数据描述信息,即读取最新状态的 sdx_Kafka_hive_eventname信息;
S33:读取Kafka数据的偏移量信息,即读取sdx_partition_offset中历史 Kafkaoffset信息;若分区offset数据不存在会从该分区最早的数据开始消费,即读取初始数据。
S4:修改hive数据信息:
S41:修改hive数据的结构描述信息:具体执行流程为修改属性面板包含 db(数据源库),tb(数据源表),fieldname(新增字段名称),fieldtype(新增字段类型), 此时选择为ods_sdx_app_installation表新增一个字段,
则会触发在hive数据结构描述信息表(sdx_hive_table_add_columns)插入一条信息,
即:INSERT INTO`sage_task_metadata`.`sdx_hive_table_add_columns`(`db`,`tb`,`sql`)VALUES('ods_sdx_safe','ods_sdx_app_installation','alter table ods_sdx_app_installation add columns(city string)');
S42:判断hive元数据是否具备更新条件:
当hive元数据具备更新条件(十分钟一次且sdx_hive_table_add_columns 表不为空)时执行前序数据更新操作,即:更新可视化面板中的配置信息,创建hive表,读取元数据信息库中的元数据信息。此时数据库中 ods_sdx_app_installation会触发执行该sql语句,新增city字段。
如果hive元数据信息不具备更新条件,则执行后续操作。
S5:读取Kafka数据,对读取到的该批次数据进行处理。其中,读取Kafka 数据包括:Spark读取单个Kafka topic数据或多个Kafka的数据。对读取到的该批次数据进行处理包括:从Kafka的指定offset位置获取数据,获取该批次数据的信息,按照topic对该批次数据分区。
S501:获取该批次数据的offest信息和hive表的元数据信息,包括:全部offset信息、hive表字段组合成的fields字符串信息(该信息和hive中建表语句中字段顺序一致)、hive表字段信息按建表顺序构建的Struct Schema信息。
S502:将该批次数据按照topic的名字进行分区,分区之后相同分区内的数据都为同一个topic的数据。按照分区将Kafka数据解析映射为数据库表。
S6:构建线程池,对该批次数据的每个分区进行处理,将Kafka数据解析映射为数据库表。线程池能够用于快速处理数据。
S601:获取该批次数据的某个分区的全部数据,并根据该分区的分区字段获取对应的hive struct schema和hive fields信息。
S602:进行线程池内单个任务的处理。具体包括:
构建一个和hive字段信息一样长的array数组;
将该分区的数据进行Json解析得到hash类型数据,并按照hive中该字段的位置放入Array中对应的位置;
将array数据序列化;
该分区数据生成RDD[Row];
将分区数据生成的RDD[Row]和struct schema信息构建成Spark的 DataFrame数据,随后写入hive数据库中的对应表中;
将该分区的offset信息写入MySQL,做数据一致性保证的历史信息;
S7:将一个分区的数据处理完毕后,判断该批次数据是否处理完毕,若判断结果为是,则读取下一批次数据进行处理;若判断结果为否,则获取该批次数据的其余分区的数据进行处理,形成在线程池中的批次内循环处理。
实施例2
本实施例提供了一种Hive Schema自动构建Scala数据类型的方案,用于实现“根据预先建立的元数据信息库表创建元数据信息库”。本实施例的方案执行流程包括:
(1)通过Spark读取hive表数据,然后获取该数据的schema信息,将该 schema信息写入元数据信息库中的hive表字段描述信息表中,即写入 sdx_hive_table_schema_dec表中;
(2)读取hive表字段描述信息表(sdx_hive_table_schema_dec)中数据库名 (db)等于和表名(tb)等于执行配置资源的参数配置时的数据库名和表名的所有数据;
(3)循环遍历每一条数据,根据对应的fieldType类型做匹配,根据匹配规则组建单个StructField数据,然后组件整个表对应的Struct Schema信息。
例如:sdx_hive_table_schema_dec中有db,tb,name,StringType数据则映射之后会生成StructField(name,StringType,true)。
实施例3
本实施例提供了一种Kafka Json构建DateFrame的方案,用于实现将 Kafka数据解析映射为数据库表。具体可以是将Kafka Json构建DataFrame。
本实施例的方案执行流程包括:
(1)Kafka Json数据格式为{“key1”:”value1”,“key2”:”value2”,“key13”:”value3”},此时将Json数据解析为hashmap结构,可根据key获取对应的数据,此数据记为hashmap;
(2)从hive表字段描述信息表(sdx_hive_table_schema_dec)中可获取对应表的所有字段的数据结构,将该数据组合成一个hashmap数据记为 hashmapSchema;
(3)Kafka数据描述信息表(sdx_Kafka_hive_eventname)中记录有hive建表语句的按顺序字段信息,将其按逗号切割为数组,记为array;
(4)新创建一个数据长度和array一样的数组,记为arrayValue;
(5)循环array中的每一个值、获取hashmap中的key对应的value(此处的key值和array中循环的值一样)、获取hashmapSchema中的key对应的 value(此处的key值和array中循环的值一样)将hashmap中获取到的值转化为hashmapSchema中获取的数据类型的数据,然后赋值给此时arrayValue中该位置的数据;
(6)将arrayValue转化为序列化的Row类型;
(7)处理RDD的数据得到一个RDD[Row];
(8)将RDD[Row]和表对应的StructType就可构建Spark DataFrame。
实施例4
本实施例提供了一种Hive Schema信息动态更新方案,用于实现广播变量的更新。本实施例的方案执行流程包括:
(1)获取当前系统执行时间;获取前次hive schema更新时间;
(2)若当前系统时间的分钟数除以10余数大于1且系统当前时间减去前次更新时间大于10分钟则执行hive schema信息更新;
(3)获取当前最新的元数据信息库中的修改hive数据结构描述信息表 (sdx_hive_table_add_columns)中该任务相关的sql语句并执行该语句;
(4)更新Kafka数据描述信息表(sdx_Kafka_hive_eventname)中的对应表的字段信息和更新hive表字段描述信息表(sdx_hive_table_schema_dec)中的对应表的字段类型信息;
(5)获取sdx_Kafka_hive_eventname和sdx_hive_table_schema_dec中更新后的数据;
(6)Spark broadcast的数据进行清除,重新对Spark broadcast的数据进行赋值;
(7)此时hive schema即更新为最新。
实施例5
本实施例提供了一种运用实施例1所提供的基于Spark Streaming的实时数据更新及管理方法的数据处理流程的实时数据存储及管理系统。
参见说明书附图3,实时数据存储及管理系统包括:
参数配置模块:用于在可视化面板进行配置资源的参数配置,具体的配置信息包括:任务名、Kafka数据源、Kafka分区数、目标数据库、目标表、 isevent。
元数据库构建模块:用于建立元数据库信息,包括:建立元数据信息库表,和,根据元数据信息库表创建元数据信息库;
参数解析模块:用于解析Kafka数据源参数。
元数据获取模块:用于读取元数据信息库中的元数据信息。包括:
读取元数据信息库中的Kafka数据的描述信息,和更新元数据信息库中对应元数据,然后获取对应元数据并作为广播变量进行广播。
hive数据信息修改模块:用于修改hive数据结构信息及相关数据;
还包括,选择模块:当hive元数据信息具备更新条件时执行数据更新操作,并在hive数据结构描述信息表(sdx_hive_table_add_columns)插入信息,当hive元数据信息不具备更新条件时读取Kafka数据进行处理。
Kafka数据批次处理模块:用于读取Kafka数据及相关信息,按照数据获取的批次对读取到的Kafka数据进行分区,按照分区对数据进行解析映射处理。Kafka数据批次处理模块包括Kafka数据解析映射模块:用于构建线程池,将一个批次的Kafka数据的每个分区解析映射为数据库表。
判断模块:用于在将一个分区的数据处理完毕后,判断该批次数据是否处理完毕:若判断结果为是,则读取下一批次数据进行处理;若判断结果为否,则获取该批次数据的其余分区的数据进行处理。
实施例6
图4为本实施例提供的一种计算机设备的结构示意图。图4显示的计算机设备1仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
计算机设备1以通用计算设备的形式表现。计算设备的组件包括:一个或多个处理器或处理单元11,系统存储器12,连接不同系统组件(包括系统存储器12和处理单元11)的总线13。计算设备1典型地包括多种计算机系统可读介质,这些介质可以是任何能够被设备计算机访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。系统存储器12可以包括易失性存储器12形式的计算机系统可读介质。
计算机设备1也可以与一个或多个外部设备2(例如键盘、指向设备、显示器等)通信,还可以与一个或多个使得用户能与该计算机交互的设备通信,和/或与使得该计算机设备1能与一个或多个其他计算设备进行通信的任何设备通信。
处理单元通过运行存储在系统存储器中的成像,从而执行各种功能应用以及数据处理,例如实现实施例1所提供的一种基于Spark Streaming的实时数据更新及管理方法的数据处理流程,包括:
更新可视化面板中的配置信息。
创建元数据信息库表。
初始化配置资源的配置参数。
解析Kafka数据源参数。
读取元数据信息库中的元数据信息。包括:读取元数据信息库中的Kafka 数据的描述信息;和,更新元数据信息库中对应元数据,然后获取对应元数据并作为广播变量进行广播。
修改hive数据信息。包括:修改属性信息并在hive数据结构描述信息表 (sdx_hive_table_add_columns)插入信息,和判断hive数据信息是否具备更新条件:当hive元数据信息具备更新条件时执行数据更新操作,当hive元数据信息不具备更新条件时读取Kafka数据进行处理。
读取Kafka数据,对读取到的该批次数据进行处理。包括:读取Kafka 数据及相关信息,按照数据获取的批次对读取到的Kafka数据进行分区,按照分区将数据传入线程池进行解析映射处理。
构建线程池,将一个批次的Kafka数据的每个分区解析映射为数据库表。
将一个分区的数据处理完毕后,判断该批次数据是否处理完毕:若判断结果为是,则读取下一批次数据进行处理;若判断结果为否,则获取该批次数据的其余分区的数据进行处理。
本实施例将一种基于Spark Streaming的实时数据更新及管理方法的数据处理流程应用到具体的计算机设备中,将该方法存储到存储器中,当执行器执行该存储器时,会运行该处理流程进行对实时数据存储及管理方法的信息处理,使用快捷方便,适用范围广。
当然,本领域技术人员可以理解,处理器还可以实现本发明任意实施例所提供的实时数据存储及管理方法的数据处理方案。
实施例7
本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所提供的基于Spark Streaming 的实时数据更新及管理方法的数据处理流程,包括:
更新可视化面板中的配置信息。
创建元数据信息库表。
初始化配置资源的配置参数。
解析Kafka数据源参数。
读取元数据信息库中的元数据信息。包括:读取元数据信息库中的Kafka 数据的描述信息;和,更新元数据信息库中对应元数据,然后获取对应元数据并作为广播变量进行广播。
修改hive数据信息。包括:修改属性信息并在hive数据结构描述信息表 (sdx_hive_table_add_columns)插入信息,和判断hive数据信息是否具备更新条件:当hive元数据信息具备更新条件时执行数据更新操作,当hive元数据信息不具备更新条件时读取Kafka数据进行处理。
读取Kafka数据,对读取到的该批次数据进行处理。包括:读取Kafka 数据及相关信息,按照数据获取的批次对读取到的Kafka数据进行分区,按照分区将数据传入线程池进行解析映射处理。
构建线程池,将一个批次的Kafka数据的每个分区解析映射为数据库表。
将一个分区的数据处理完毕后,判断该批次数据是否处理完毕:若判断结果为是,则读取下一批次数据进行处理;若判断结果为否,则获取该批次数据的其余分区的数据进行处理。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
本实施例将基于Spark Streaming的实时数据更新及管理方法的数据处理流程应用到一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明提供的自适应阈值的睫毛分割方法,简便快捷,易于存储,不易丢失。
综上所述,本发明提供的基于Spark Streaming的实时数据更新及管理方法通过前端界面新增字段、新增或删除kafka topic之后数据同步至元数据信息库,SparkStreaming同步元数据信息获取数据新增和变化,然后解析的时候自动添加新增的数据达到自动感知的自动化处理。该实时数据存储及管理方法在新增任务只需要修改元数据信息,新建hive表,代码会自动更新元数据信息库中hive元数据信息,把Kafka数据一一解析对应hive的数据类型,数据写入hive并同时更新对应数据的offset信息。通过简单配置Kafka数据和hive数据映射信息可快速实现测试、开发、部署上线任务。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,除了以上实施例以外,还可以具有不同的变形例,以上实施例的技术特征可以相互组合,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于Spark Streaming的实时数据更新及管理方法,其特征在于,所述实时数据存储及管理方法包括:
进行配置资源的参数配置;
建立元数据信息库表;
解析Kafka数据的源参数,获取实时数据更新;
读取元数据信息库中的元数据信息,包括读取所述元数据信息库中的所述Kafka数据的描述信息,和,更新所述元数据信息库中对应元数据后读取;
修改hive数据信息;
读取所述Kafka数据,对读取到的批次的所述Kafka数据进行分区,按照所述分区将所述Kafka数据解析映射为数据库表。
2.根据权利要求1所述的实时数据存储及管理方法,其特征在于,还包括元数据信息库的创建:数据转发中心接受设备终端产生的数据并分类,然后根据预先建立的所述元数据信息库表创建所述元数据信息库;
其中,所述“根据预先建立的所述元数据信息库表创建元数据信息库”包括:
读取hive数据,然后获取该数据的schema信息,将该schema信息写入元数据信息库中的hive表字段描述信息表中;
读取所述hive表字段描述信息表中数据库名等于和表名等于执行所述配置资源的参数配置时的数据库名和表名的所有数据;
循环遍历每一条数据,根据对应的fieldType类型做匹配,根据匹配规则组建单个StructField数据,然后组件整个表对应的Struct Schema信息。
3.根据权利要求1所述的实时数据存储及管理方法,其特征在于,所述“更新所述元数据信息库中对应元数据后读取”包括:
更新所述元数据信息库,然后读取对应元数据信息,并作为广播变量进行广播;
其中,所述广播变量的更新包括:
获取当前系统执行时间;获取前次hive schema更新时间;
若所述当前系统时间的分钟数除以10余数大于1且所述当前系统时间减去所述前次hive schema更新时间大于10分钟则执行hive schema信息更新;
获取当前最新的元数据信息库中的修改hive数据结构描述信息表中该任务相关的sql语句并执行所述sql语句;
更新Kafka数据描述信息表中的对应表的字段信息和更新hive表字段描述信息表中的对应表中的字段类型信息;
获取所述Kafka数据描述信息表和所述hive表字段描述信息表中更新后的数据;
清除Spark broadcast的数据,然后重新对Spark broadcast的数据进行赋值。
4.根据权利要求1所述的实时数据存储及管理方法,其特征在于,所述“修改hive数据信息”包括:
包括:修改所述hive数据的结构描述信息;
和,判断所述hive数据是否具备更新条件,当所述hive数据具备更新条件时执行前序数据更新操作;当所述hive数据信息不具备更新条件,则执行后续读取所述Kafka数据解析映射操作。
5.根据权利要求4所述的实时数据存储及管理方法,其特征在于,所述hive数据的更新条件为:当前系统执行时间与前次所述系统执行时间间隔十分钟,且hive数据结构描述信息表不为空。
6.根据权利要求1所述的实时数据存储及管理方法,其特征在于,所述“按照所述分区将所述Kafka数据解析映射为数据库表”包括:
获取某个所述分区的全部数据;
构建一个和hive字段信息一样长的array数组;
将所述分区的数据进行Json解析得到hash类型数据,并按照hive中该字段的位置放入array中对应的位置;
将array数据序列化;
所述分区的数据生成RDD[Row];
所述分区的数据生成的RDD[Row]和struct schema信息构建成Spark的DataFrame数据,随后写入hive数据库中的对应表中。
7.根据权利要求5所述的实时数据存储及管理方法,其特征在于,所述“构建一个和hive字段信息一样长的array数组;将该分区的数据进行Json解析得到hash类型数据,并按照hive中该字段的位置放入Array中对应的位置;将array数据序列化”进一步包括:
将Json数据解析为hashmap结构,根据key获取对应的数据记为hashmap;
从Hive表字段描述信息表中获取对应表的所有字段的数据结构,组合成一个hashmap数据记为hashmapSchema;
将Kafka数据描述信息表中记录的hive建表语句的按顺序字段信息构建数组记为array;
创建一个数据长度和array一样的数组记为arrayValue;
循环array中的每一个值、获取hashmap中的key对应的value、获取hashmapSchema中的key对应的value,将hashmap中获取到的值转化为hashmapSchema中获取的数据类型的数据,然后赋值给此时arrayValue中相同位置的数据;
将arrayValue转化为序列化的Row类型。
8.根据权利要求1所述的实时数据存储及管理方法,其特征在于,还包括:
每个分区数据处理完毕后判断所述批次的所述Kafka数据是否处理完毕;
若判断结果为是,则读取下一批次数据进行处理;若判断结果为否,则读取其余分区数据进行处理。
9.一种实时数据存储及管理方法系统,用于执行权利要求1-7任一项所述的实时数据存储及管理方法的数据处理,其特征在于,包括:
参数配置模块:用于在可视化面板进行配置资源的参数配置;
元数据库构建模块:用于建立元数据库信息;
参数解析模块:用于解析Kafka数据源参数;
元数据获取模块:用于读取元数据信息库中的元数据信息;
hive数据信息修改模块:用于修改hive数据结构信息及相关数据;
Kafka数据批次处理模块:用于读取所述Kafka数据及相关信息,按照数据获取的批次对读取到的所述Kafka数据进行分区,按照所述分区对数据进行解析映射处理。
10.根据权利要求8所述的实时数据存储及管理方法系统,其特征在于,还包括:
判断模块:用于在将一个所述分区的数据处理完毕后,判断所述批次数据是否处理完毕:若判断结果为是,则读取下一批次数据进行处理;若判断结果为否,则获取该批次数据的其余的所述分区的数据进行处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110600651.4A CN113590667A (zh) | 2021-05-31 | 2021-05-31 | 一种基于Spark Streaming的实时数据更新及管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110600651.4A CN113590667A (zh) | 2021-05-31 | 2021-05-31 | 一种基于Spark Streaming的实时数据更新及管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113590667A true CN113590667A (zh) | 2021-11-02 |
Family
ID=78243220
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110600651.4A Pending CN113590667A (zh) | 2021-05-31 | 2021-05-31 | 一种基于Spark Streaming的实时数据更新及管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113590667A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115168474A (zh) * | 2022-07-26 | 2022-10-11 | 成都智元汇信息技术股份有限公司 | 一种基于大数据模型的物联中台系统搭建方法 |
-
2021
- 2021-05-31 CN CN202110600651.4A patent/CN113590667A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115168474A (zh) * | 2022-07-26 | 2022-10-11 | 成都智元汇信息技术股份有限公司 | 一种基于大数据模型的物联中台系统搭建方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112564988B (zh) | 告警处理方法、装置及电子设备 | |
CN105224606A (zh) | 一种用户标识的处理方法及装置 | |
CN110147470B (zh) | 一种跨机房数据比对系统及方法 | |
CN111338581B (zh) | 基于云计算的数据存储方法、装置、云服务器及系统 | |
CN111680085A (zh) | 数据处理任务分析方法、装置、电子设备和可读存储介质 | |
CN107391528B (zh) | 前端组件依赖信息搜索方法及设备 | |
CN113590667A (zh) | 一种基于Spark Streaming的实时数据更新及管理方法 | |
CN104834730A (zh) | 数据分析系统和方法 | |
CN113568923A (zh) | 数据库中数据的查询方法和装置、存储介质及电子设备 | |
CN111090665A (zh) | 一种数据任务调度方法及调度系统 | |
CN104317820B (zh) | 报表的统计方法和装置 | |
CN113220530B (zh) | 数据质量监控方法及平台 | |
CN110515979A (zh) | 数据查询方法、装置、设备和存储介质 | |
CN115455006A (zh) | 数据处理方法、数据处理装置、电子设备及存储介质 | |
CN115168509A (zh) | 风控数据的处理方法及装置、存储介质、计算机设备 | |
US20190236625A1 (en) | Arrangement and method for digital media measurements involving user panels | |
EP3671467A1 (en) | Gui application testing using bots | |
CN110929207A (zh) | 数据处理方法、装置和计算机可读存储介质 | |
CN110688387A (zh) | 一种数据处理方法及装置 | |
CN110781430A (zh) | 互联网新型虚拟数据中心系统及其构造方法 | |
CN106547788B (zh) | 数据处理方法和装置 | |
CN117390040B (zh) | 基于实时宽表的业务请求处理方法、设备及存储介质 | |
CN113553320B (zh) | 数据质量监控方法及装置 | |
CN116541377B (zh) | 任务的物化视图的处理方法、系统和电子设备 | |
CN114140031A (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 | ||
CB02 | Change of applicant information |
Address after: 518000 D401, productivity building, No. 5, Gaoxin middle 2nd Road, Science Park community, Yuehai street, Nanshan District, Shenzhen, Guangdong Applicant after: Shenzhen ganzhen intelligent Co.,Ltd. Address before: 518000 Room 501, building a, productivity building, No.5, Gaoxin middle 2nd Road, science and Technology Park, Yuehai street, Nanshan District, Shenzhen City, Guangdong Province Applicant before: 8D TECHNOLOGY Ltd. |
|
CB02 | Change of applicant information |