CN109542889A - 流式数据列存储方法、装置、设备和存储介质 - Google Patents

流式数据列存储方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN109542889A
CN109542889A CN201811182661.5A CN201811182661A CN109542889A CN 109542889 A CN109542889 A CN 109542889A CN 201811182661 A CN201811182661 A CN 201811182661A CN 109542889 A CN109542889 A CN 109542889A
Authority
CN
China
Prior art keywords
data
row
format
pending
formatted
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
CN201811182661.5A
Other languages
English (en)
Other versions
CN109542889B (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.)
Ping An Technology Shenzhen Co Ltd
Original Assignee
Ping An Technology Shenzhen 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 Ping An Technology Shenzhen Co Ltd filed Critical Ping An Technology Shenzhen Co Ltd
Priority to CN201811182661.5A priority Critical patent/CN109542889B/zh
Publication of CN109542889A publication Critical patent/CN109542889A/zh
Priority to PCT/CN2019/092893 priority patent/WO2020073687A1/zh
Application granted granted Critical
Publication of CN109542889B publication Critical patent/CN109542889B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明涉及流式数据存储领域,尤其涉及一种流式数据列存储方法、装置、设备和存储介质。流式数据列存储方法包括:从实时消息系统中读取数据,得到待处理数据;对所述待处理数据进行解析,得到结构化数据;将所述结构化数据转换为Row格式数据,每将一组所述结构化数据转换为Row格式数据后,即存入内存中;将所述内存中存入的多行所述Row格式数据组成Dataset<Row>格式数据,通过列存储的格式写入文件系统。本发明通过Spark Streaming对实时消息系统中的流式数据进行处理,解决了当前无法把实时消息系统中的流式数据保存为列存储格式的问题,极大地提高了后续对大量数据处理的速度,节省了把行存储结构转换为列存储结构的时间。

Description

流式数据列存储方法、装置、设备和存储介质
技术领域
本发明涉及流式数据存储领域,尤其涉及一种流式数据列存储方法、装置、设备和存储介质。
背景技术
近年来,随着互联网的迅猛发展,数据的快速增长成了许多行业共同面临的机遇与挑战。在当今网络环境下,大量数据源是实时的,不间断的,要求对用户的响应时间也是实时的。这些数据以流式的形式被采集、计算与查询,如实时消息系统,对流入的数据均采取流式方式处理。其每时每刻都有各式各样的、海量的网络数据流入,流入速度各异,且数据结构复杂多样,包括二进制文件、文本文件、压缩文件等。对于此类系统,需要底层存储系统能够支持:对流入的数据以统一格式存储,对上层应用提供统一接口,方便检索,并且对实时性也有一定要求。
针对现今的大数据趋势,涌现了一批大数据处理平台,比如kafka,flume等。具体为前置应用把消息通过流式的方式输入到消息队列中,然后消息队列再通过某种形式把这些数据写入到磁盘,比如hdfs,或者本地磁盘。
由于实时消息系统的流式处理形式,使得消息最终都是以行存储的形式写入磁盘,比如json,或者普通文本。而在大数据处理中,很多情况下需要数据以列存储的形式进行保存,这时候传统的flume等工具就无法满足需求。
发明内容
有鉴于此,有必要针对现有实时消息系统中的数据均是以行存储的形式写入文件系统,而不是以列存储的形式写入文件系统,提供一种流式数据列存储方法、装置、设备和存储介质。
一种流式数据列存储方法,包括如下步骤:
从实时消息系统中读取数据,得到待处理数据;
对所述待处理数据进行解析,得到结构化数据;
将所述结构化数据转换为Row格式数据,每将一组所述结构化数据转换为
Row格式数据后,即存入内存中;
将所述内存中存入的多行所述Row格式数据组成Dataset<Row>格式数据,
通过列存储的格式写入文件系统。
在其中一个实施例中,所述从实时消息系统中读取数据,得到待处理数据,包括:
获取所述实时消息系统的访问权限,并连接到所述实时消息系统;
设定执行周期,按照所述执行周期从所述实时消息系统中读取数据。
在其中一个实施例中,所述对所述待处理数据进行解析,得到结构化数据,包括对所述待处理数据的格式进行判断后,按照判断结果采用不同的方法进行解析,具体包括:
若所述待处理数据为json格式,则调用FastJSON将所述json格式的待处理数据解析为所述结构化数据;
若所述待处理数据为csv格式,则根据所述待处理数据的内容,并通过DataFrame()方法给所述csv格式的待处理数据添加结构化信息,得到所述结构化数据。
在其中一个实施例中,所述将所述内存中存入的多行所述Row格式数据组成Dataset<Row>格式数据,通过列存储的格式写入文件系统,包括:
通过数据框架的方法将多行所述Row格式数据组成所述Dataset<Row>格式数据;
通过parquet()将所述Dataset<Row>格式数据转换为parquet格式数据,并使用spark.read()将parquet格式数据写入文件系统。
在其中一个实施例中,所述设定执行周期,按照所述执行周期从所述实时消息系统中读取数据,包括:
从所述实时消息系统中第一条数据所在位置开始读取;
接收读取完毕的指令,停止读取,并记录读取完毕的位置;
获取上次读取完毕的位置,从上次读取完毕的位置开始读取,直到接收到读取完毕的指令,停止读取,并记录读取完毕的位置。
在其中一个实施例中,所述若所述待处理数据为json格式,则调用FastJSON将所述json格式的待处理数据解析为所述结构化数据,包括:
提取所述json格式的待处理数据的字段信息;
根据所述字段信息对所述json格式的待处理数据进行排序,得到所述结构化数据。
在其中一个实施例中,所述将所述内存中存入的多行所述Row格式数据组成Dataset<Row>格式数据,通过列存储的格式写入文件系统之后,还包括:
根据所述待处理数据的列信息对存储路径进行分割;
调用partitionBy()函数,将所述待处理数据中列名相同的列,按照所述列中不同的值存储于不同目录。
一种流式数据列存储装置,包括如下模块:
数据获取模块,设置为从实时消息系统中读取数据,得到待处理数据;
数据解析模块,设置为对所述待处理数据进行解析,得到结构化数据;
数据转换模块,设置为将所述结构化数据转换为Row格式数据,每将一组所述结构化数据转换为Row格式数据后,即存入内存中;
数据存储模块,设置为将所述内存中存入的多行所述Row格式数据组成Dataset<Row>格式数据,通过列存储的格式写入文件系统。
一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被一个或多个所述处理器执行时,使得一个或多个所述处理器执行上述流式数据列存储方法的步骤。
一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个所述处理器执行上述流式数据列存储方法的步骤。
上述流式数据列存储方法、装置、设备和存储介质,包括:设定执行周期,并按照执行周期从实时消息系统中读取数据,得到待处理数据;对所述待处理数据进行解析,得到结构化数据;将所述结构化数据转换为Row格式数据,每将一组所述结构化数据转换为Row格式数据后,即存入内存中;将所述内存中存入的多行所述Row格式数据组成Dataset<Row>格式数据,通过列存储的格式写入文件系统。本技术方案通过Spark Streaming对实时消息系统中的流式数据进行处理,解决了当前无法把实时消息系统中的流式数据保存为列存储格式的问题,极大地提高了后续对大量数据处理的速度,也节省了把行存储结构转换为列存储结构的时间,使用Spark Streaming作为计算框架,极大地利用分布式计算提高了转换和存储性能。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。
图1为本发明的一种流式数据列存储方法的整体流程图;
图2为本发明的一种流式数据列存储方法中的数据获取过程的示意图;
图3为本发明的一种流式数据列存储方法中的数据解析过程的示意图;
图4为本发明的一种流式数据列存储方法中的数据存储过程的示意图;
图5为本发明的一种流式数据列存储装置的结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
图1为本发明的一种流式数据列存储方法的整体流程图,如图1所示,一种流式数据列存储方法,包括以下步骤:
步骤S1,从实时消息系统中读取数据,得到待处理数据。
其中,本发明的一种流式数据列存储装置主要包括Spark Streaming程序,本发明主要依托Spark Streaming对实时消息系统的流式数据进行处理,从而实现将实时消息系统中的流式数据转换为列存储的形式写入文件系统。实时消息系统中的数据为流式数据,实时消息系统也是流式数据的处理组件。
其中,Spark Streaming包括数据获取模块、数据解析模块、数据转换模块和数据存储模块。
上述步骤执行时,数据获取模块的其中一个子模块每隔一段时间发出数据获取指令,另一个子模块则接收上述数据获取指令,接收到数据获取指令后,执行指令,从实时消息系统中读取数据,得到待处理数据。
步骤S2,对所述待处理数据进行解析,得到结构化数据。
上述步骤执行时,数据获取模块将得到的待处理数据发送给数据解析模块,数据解析模块对待处理数据进行解析,并根据待处理数据的不同格式采用不同的方法进行解析。从实时消息系统中获取的数据,其数据结构复杂多样,包括二进制文件、文本文件、压缩文件等各种格式的数据。数据解析模块接收到不同格式的待处理数据后,采用不同方法进行解析,最终将待处理数据统一解析为结构化数据,再发送给数据转换模块。
步骤S3,将所述结构化数据转换为Row格式数据,每将一组所述结构化数据转换为Row格式数据后,即存入内存中。
上述步骤执行时,数据转换模块将数据解析模块发来的结构化数据转换为Row格式数据,暂时存入数据存储模块中。
在其中一个优选的实施例中,通过spark.createRow()将解析后的结构化数据转换为Row格式数据。
其中,Row格式是Spark Streaming自带的一种格式,并且Row格式为一种带列信息的数据结构,其实质为一行数据。
步骤S4,将所述内存中存入的多行所述Row格式数据组成Dataset<Row>格式数据,通过列存储的格式写入文件系统。
上述步骤执行时,经过数据转换模块转换好的Row格式数据暂时存入数据存储模块,每隔一段时间,把累加的多行Row格式数据组成Dataset<Row>格式数据,一次性以列存储的格式写入文件系统。
其中,Dataset<Row>格式是Spark Streaming自带的一种格式,Dataset<Row>格式是很多行Row格式组成的矩阵,是Row格式数据的有序集合,Dataset<Row>即为列信息结构,将Dataset<Row>格式的数据转换为列存储的格式即是数据以列的形式存在。
本实施例,通过Spark Streaming对实时消息系统中的流式数据进行解析处理,将每一条数据转换为Spark Streaming中的Row格式数据,并将多行Row格式数据合并累加暂时放到数据存储模块中,再组成Dataset<Row>格式一次性写入文件系统,解决了当前流式数据无法列存储的问题,使用Spark Streaming作为计算框架,提高了数据的转换和存储性能。
在一个实施例中,图2为本发明的一种流式数据列存储方法中的数据获取过程的示意图,如图2所示,一种流式数据列存储方法的数据获取过程,包括如下步骤:
步骤S101,获取所述实时消息系统的访问权限,并连接到所述实时消息系统。
上述步骤执行时,通过使用远程连接权限的用户名和密码获取所述实时消息系统的访问权限,并通过Hibernate对象关系映射框架与所述实时消息系统进行连接。
步骤S102,设定执行周期,按照所述执行周期从所述实时消息系统中读取数据。
上述步骤执行时,设定Spark Streaming程序的执行周期,并将执行周期作为参数值传入Spark Streaming程序。
在其中一个优选的实施例中,也可以将执行周期作为固定值写在程序中,设定在Spark Streaming程序的配置参数中。
在其中一个优选的实施例中,执行周期可以设置为每次读取时间间隔相同,也可以根据实时消息系统数据流入速度的快慢设置为读取时间间隔不相同。
本实施例,将执行周期作为参数值传入Spark Streaming程序中,比较灵活,将执行周期作为固定值写在程序中,可以确保数值的安全性较高,而且执行周期可以根据实时消息系统数据流入速度的快慢灵活设置。
在一个实施例中,图3为本发明的一种流式数据列存储方法中的数据解析过程的示意图,如图3所示,一种流式数据列存储方法的数据解析过程,包括如下步骤:
步骤S201,若所述待处理数据为json格式,则调用FastJSON将所述json格式的待处理数据解析为所述结构化数据。
上述步骤执行时,若从实时消息系统中获取的数据为json格式,使用相关库进行对其进行解析,在其中一个优选的实施例中,使用FastJSON对其进行解析。
具体的,若从实时消息系统中获取的数据为{"id":0,"name":"Alice","age":21}的json格式数据,其结构包括3个字段,分别为id、name和age,分别代表id、姓名和年龄。使用Fastjson对其进行解析之后,则会解析为一个包含id,name,age的结构化数据,之后,再将解析之后的数据转换为Spark Streaming自带的Row格式数据。
步骤S202,若所述待处理数据为csv格式,则根据所述待处理数据的内容,并通过DataFrame()方法给所述csv格式的待处理数据添加结构化信息,得到所述结构化数据。
其中,不同于json和avro等格式的数据,csv格式的数据一般只包含数据信息,不包含结构信息。如上述步骤S201中提到的{"id":0,"name":"Alice","age":21}的json格式数据,如果是csv格式,则其数据内容只有0,Alice,21。这样格式的数据,无法通过数据内容确定每一列所表示的意思,需要根据用户对数据的认知,设定第一列为id,第二列为姓名,第三列为年龄,即根据数据的内容自行添加结构化信息,将数据解析为结构化数据,再将数据转换为Row格式数据。
上述步骤执行时,通过spark.createDataFrame(RowJavaRDD,type)方法来给数据添加结构化信息。其中,RowJavaRDD指的是数据信息,type为结构信息。
本实施例,对不同格式的数据采用不同的解析方法,使数据统一解析为结构化数据,再将数据转换为Row格式数据,节省了数据处理的时间,且提高了数据处理的准确度。
在一个实施例中,图4为本发明的一种流式数据列存储方法中的数据存储过程的示意图,如图4所示,一种流式数据列存储方法的数据存储过程,包括如下步骤:
步骤S301,通过数据框架的方法将多行所述Row格式数据组成所述Dataset<Row>格式数据。
在其中一个优选的实施例中,使用spark.createDataFrame(RowJavaRDD,type)将多行Row格式数据组成Dataset<Row>格式数据,其中,RowJavaRDD表示数据信息,type表示结构信息。
步骤S302,通过parquet()将所述Dataset<Row>格式数据转换为parquet格式数据,并使用spark.read()将parquet格式数据写入文件系统。
上述步骤执行时,使用spark.read().parquet(filename)将Dataset<Row>格式数据以parquet格式,写入文件系统。
上述步骤执行时,如果要以parquet格式进行列存储,使用parquet()将Dataset<Row>格式数据转换为parquet格式,具体的,使用parquet(filename)将Dataset<Row>格式数据转换为parquet格式,parquet是一种支持列式存储的文件格式。
上述步骤执行时,使用spark.read()将转换后的parquet格式的数据,写入文件系统。
本步骤中,还可以通过其他列存储格式将数据写入文件系统。
文件系统包括本地文件(file://)和HDFS(hdfs://),亦可包括其他spark所支持的其他文件系统,比如亚马逊S3(s3://)。一般是通过文件名来制定,比如要写入hdfs根目录下的data文件夹,则可以设置为hdfs:///data/。
本实施例,通过使用spark.createDataFrame(RowJavaRDD,type)将多行Row格式数据组成Dataset<Row>格式数据,使流式数据转换为列数据结构,为后续数据列存储打好基础。使用spark.read()将组成的Dataset<Row>格式的数据写入文件系统,实现了流式数据以列存储的格式写入文件系统。
在一个实施例中,按照所述执行周期从所述实时消息系统中读取数据,包括如下具体步骤:
从所述实时消息系统中第一条数据所在位置开始读取。
接收读取完毕的指令,停止读取,并记录读取完毕的位置。
获取上次读取完毕的位置,从上次读取完毕的位置开始读取,直到接收到读取完毕的指令,停止读取,并记录读取完毕的位置。
上述步骤执行时,当程序为首次读取数据时,则从实时消息系统中第一条数据所在位置开始读取,直到读取时产生的最新数据读取完,此时,会接收到读取完毕的指令,则停止读取,Spark Streaming自动记录下读取完毕的位置。
其中,首次读取数据是指第一次启动程序时的读取,Spark Streaming程序为永久运行,如果不暂停,可以一直运行下去。由于实时消息系统的数据是源源不断的被写入的,所以每次数据读取完毕时,由Spark Streaming记录下每次读取完毕的位置,以便下次读取。
以后每次读取数据时,获取上次读取完毕的位置,从上次读取完毕的位置开始读取,直到接收到读取完毕的指令,停止读取,并记录读取完毕的位置。
本实施例,每次读取完毕,都会记录下读取完毕的位置,便于下次读取,且不易出错,提高了数据获取的速度和质量。
在一个实施例中,调用FastJSON将所述json格式的待处理数据解析为所述结构化数据,包括如下具体步骤:
提取所述json格式的待处理数据的字段信息;
根据所述字段信息对所述json格式的待处理数据进行排序,得到所述结构化数据。
从实时消息系统中获取的数据为{"age":21,"id":0,"name":"Alice",}的json格式数据,使用FastJSON将数据的字段信息提取出来,分别为age、id、和name,分别代表年龄、id和姓名。再根据字段信息对待处理数据进行排序,比如,排好序的数据结构为{"id","name","age"},则{"id","name","age"}即为结构化数据。
在一个实施例中,数据转换模块根据需要决定是否对解析后的结构化数据进行修改。若存储时需要按照年月日进行存储,若从实时消息系统中获取的数据含有时间戳,如“2017-09-21 08:16:05.011”,而存储时需要按照年月日进行存储,则需要把时间戳中的年月日信息提取出来。
在一个实施例中,可以根据待处理数据的列信息对存储路径进行分割,通过partitionBy()函数,将所述待处理数据中列名相同的列,按照所述列中不同的值存储于不同目录。
上述步骤执行时,通过spark.read().partitionBy()对存储路径进行分割,比如参数填写为newDf.write().mode(SaveMode.Append).partitionBy("stream","year","month","day","hour").orc("orc"),指的是根据stream,year,month,day字段来进行路径的分割。
partitionBy是分析性函数的一部分,它和聚合函数groupBy不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,partitionBy用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组,partitionBy返回的是分组里的每一条数据,并且可以对分组数据进行排序操作。
本实施例,通过使用partitionBy函数实现了对存储路径的分割,方便了后续对大量数据的处理。
一种流式数据列存储装置,如图5所示,包括如下模块:
数据获取模块,设置为从实时消息系统中读取数据,得到待处理数据;
数据解析模块,设置为对所述待处理数据进行解析,得到结构化数据;
数据转换模块,设置为将所述结构化数据转换为Row格式数据,每将一组所述结构化数据转换为Row格式数据后,即存入内存中;
数据存储模块,设置为将所述内存中存入的多行所述Row格式数据组成Dataset<Row>格式数据,通过列存储的格式写入文件系统。
在一个实施例中,提出了一种计算机设备,包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行计算机可读指令时实现上述各实施例中所述的流式数据列存储方法的步骤。
在一个实施例中,提出了一种存储有计算机可读指令的存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述各实施例中所述的流式数据列存储方法的步骤。其中,所述存储介质可以为非易失性存储介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁盘或光盘等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明一些示例性实施例,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种流式数据列存储方法,其特征在于,包括如下步骤:
从实时消息系统中读取数据,得到待处理数据;
对所述待处理数据进行解析,得到结构化数据;
将所述结构化数据转换为Row格式数据,每将一组所述结构化数据转换为Row格式数据后,即存入内存中;
将所述内存中存入的多行所述Row格式数据组成Dataset<Row>格式数据,
通过列存储的格式写入文件系统。
2.根据权利要求1所述的流式数据列存储方法,其特征在于,所述从实时消息系统中读取数据,得到待处理数据,包括:
获取所述实时消息系统的访问权限,并连接到所述实时消息系统;
设定执行周期,按照所述执行周期从所述实时消息系统中读取数据。
3.根据权利要求1所述的流式数据列存储方法,其特征在于,所述对所述待处理数据进行解析,得到结构化数据,包括对所述待处理数据的格式进行判断后,按照判断结果采用不同的方法进行解析,具体包括:
若所述待处理数据为json格式,则调用FastJSON将所述json格式的待处理数据解析为所述结构化数据;
若所述待处理数据为csv格式,则根据所述待处理数据的内容,并通过DataFrame()方法给所述csv格式的待处理数据添加结构化信息,得到所述结构化数据。
4.根据权利要求1所述的流式数据列存储方法,其特征在于,所述将所述内存中存入的多行所述Row格式数据组成Dataset<Row>格式数据,通过列存储的格式写入文件系统,包括:
通过数据框架的方法将多行所述Row格式数据组成所述Dataset<Row>格式数据;
通过parquet()将所述Dataset<Row>格式数据转换为parquet格式数据,并使用spark.read()将parquet格式数据写入文件系统。
5.根据权利要求2所述的流式数据列存储方法,其特征在于,所述设定执行周期,按照所述执行周期从所述实时消息系统中读取数据,包括:
从所述实时消息系统中第一条数据所在位置开始读取;
接收读取完毕的指令,停止读取,并记录读取完毕的位置;
获取上次读取完毕的位置,从上次读取完毕的位置开始读取,直到接收到读取完毕的指令,停止读取,并记录读取完毕的位置。
6.根据权利要求3所述的流式数据列存储方法,其特征在于,所述若所述待处理数据为json格式,则调用FastJSON将所述json格式的待处理数据解析为所述结构化数据,包括:
提取所述json格式的待处理数据的字段信息;
根据所述字段信息对所述json格式的待处理数据进行排序,得到所述结构化数据。
7.根据权利要求1所述的流式数据列存储方法,其特征在于,所述将所述内存中存入的多行所述Row格式数据组成Dataset<Row>格式数据,通过列存储的格式写入文件系统之后,还包括:
根据所述待处理数据的列信息对存储路径进行分割;
调用partitionBy()函数,将所述待处理数据中列名相同的列,按照所述列中不同的值存储于不同目录。
8.一种流式数据列存储装置,其特征在于,包括如下模块:
数据获取模块,设置为从实时消息系统中读取数据,得到待处理数据;
数据解析模块,设置为对所述待处理数据进行解析,得到结构化数据;
数据转换模块,设置为将所述结构化数据转换为Row格式数据,每将一组所述结构化数据转换为Row格式数据后,即存入内存中;
数据存储模块,设置为将所述内存中存入的多行所述Row格式数据组成Dataset<Row>格式数据,通过列存储的格式写入文件系统。
9.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被一个或多个所述处理器执行时,使得一个或多个所述处理器执行如权利要求1至7中任一项所述的流式数据列存储方法的步骤。
10.一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个所述处理器执行如权利要求1至7中任一项所述的流式数据列存储方法的步骤。
CN201811182661.5A 2018-10-11 2018-10-11 流式数据列存储方法、装置、设备和存储介质 Active CN109542889B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201811182661.5A CN109542889B (zh) 2018-10-11 2018-10-11 流式数据列存储方法、装置、设备和存储介质
PCT/CN2019/092893 WO2020073687A1 (zh) 2018-10-11 2019-06-26 流式数据列存储方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811182661.5A CN109542889B (zh) 2018-10-11 2018-10-11 流式数据列存储方法、装置、设备和存储介质

Publications (2)

Publication Number Publication Date
CN109542889A true CN109542889A (zh) 2019-03-29
CN109542889B CN109542889B (zh) 2023-07-21

Family

ID=65843868

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811182661.5A Active CN109542889B (zh) 2018-10-11 2018-10-11 流式数据列存储方法、装置、设备和存储介质

Country Status (2)

Country Link
CN (1) CN109542889B (zh)
WO (1) WO2020073687A1 (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110162563A (zh) * 2019-05-28 2019-08-23 深圳市网心科技有限公司 一种数据入库方法、系统及电子设备和存储介质
CN110187829A (zh) * 2019-04-22 2019-08-30 上海蔚来汽车有限公司 一种数据处理方法、装置、系统及电子设备
CN110968585A (zh) * 2019-12-20 2020-04-07 深圳前海微众银行股份有限公司 面向列的存储方法、装置、设备及计算机可读存储介质
WO2020073687A1 (zh) * 2018-10-11 2020-04-16 平安科技(深圳)有限公司 流式数据列存储方法、装置、设备和存储介质
CN111104067A (zh) * 2019-12-20 2020-05-05 深圳前海微众银行股份有限公司 面向列的缓存方法、装置、设备及计算机可读存储介质
CN111159176A (zh) * 2019-11-29 2020-05-15 中国科学院计算技术研究所 一种海量流数据的存储和读取的方法和系统
CN112052239A (zh) * 2020-08-12 2020-12-08 网宿科技股份有限公司 数据封装方法、电子设备及存储介质
CN112052253A (zh) * 2020-08-12 2020-12-08 网宿科技股份有限公司 数据处理方法、电子设备及存储介质
CN112181973A (zh) * 2019-07-01 2021-01-05 北京涛思数据科技有限公司 一种时序数据的存储方法
CN113656362A (zh) * 2021-08-20 2021-11-16 中国银行股份有限公司 Spark流文件存储方法及装置
CN114417408A (zh) * 2022-01-18 2022-04-29 百度在线网络技术(北京)有限公司 数据处理方法、装置、设备以及存储介质
CN115438114A (zh) * 2022-11-09 2022-12-06 浪潮电子信息产业股份有限公司 存储格式转换方法、系统、装置、电子设备及存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11526500B2 (en) * 2019-12-12 2022-12-13 Sap Se System and method for initiating bulk inserts in a distributed database

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080120283A1 (en) * 2006-11-17 2008-05-22 Oracle International Corporation Processing XML data stream(s) using continuous queries in a data stream management system
US20090171999A1 (en) * 2007-12-27 2009-07-02 Cloudscale Inc. System and Methodology for Parallel Stream Processing
CN101727465A (zh) * 2008-11-03 2010-06-09 中国移动通信集团公司 分布式列存储数据库索引建立、查询方法及装置与系统
US20130219150A1 (en) * 2012-02-20 2013-08-22 International Business Machines Corporation Parsing Data Representative of a Hardware Design into Commands of a Hardware Design Environment
US20140244602A1 (en) * 2013-02-22 2014-08-28 Sap Ag Semantic compression of structured data
US20140351233A1 (en) * 2013-05-24 2014-11-27 Software AG USA Inc. System and method for continuous analytics run against a combination of static and real-time data
CN107092676A (zh) * 2017-04-18 2017-08-25 广东浪潮大数据研究有限公司 一种数据处理方法及装置
CN107194001A (zh) * 2017-06-14 2017-09-22 网宿科技股份有限公司 一种列式存储格式文件快速合并方法及其系统
CN107391544A (zh) * 2017-05-24 2017-11-24 阿里巴巴集团控股有限公司 列式存储数据的处理方法、装置、设备及计算机储存介质
CN108255855A (zh) * 2016-12-29 2018-07-06 北京国双科技有限公司 数据存储方法和装置
CN108319652A (zh) * 2017-12-28 2018-07-24 浙江新再灵科技股份有限公司 一种基于hdfs的电梯数据的列式文件存储系统及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109542889B (zh) * 2018-10-11 2023-07-21 平安科技(深圳)有限公司 流式数据列存储方法、装置、设备和存储介质

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080120283A1 (en) * 2006-11-17 2008-05-22 Oracle International Corporation Processing XML data stream(s) using continuous queries in a data stream management system
US20090171999A1 (en) * 2007-12-27 2009-07-02 Cloudscale Inc. System and Methodology for Parallel Stream Processing
CN101727465A (zh) * 2008-11-03 2010-06-09 中国移动通信集团公司 分布式列存储数据库索引建立、查询方法及装置与系统
US20130219150A1 (en) * 2012-02-20 2013-08-22 International Business Machines Corporation Parsing Data Representative of a Hardware Design into Commands of a Hardware Design Environment
US20140244602A1 (en) * 2013-02-22 2014-08-28 Sap Ag Semantic compression of structured data
US20140351233A1 (en) * 2013-05-24 2014-11-27 Software AG USA Inc. System and method for continuous analytics run against a combination of static and real-time data
CN108255855A (zh) * 2016-12-29 2018-07-06 北京国双科技有限公司 数据存储方法和装置
CN107092676A (zh) * 2017-04-18 2017-08-25 广东浪潮大数据研究有限公司 一种数据处理方法及装置
CN107391544A (zh) * 2017-05-24 2017-11-24 阿里巴巴集团控股有限公司 列式存储数据的处理方法、装置、设备及计算机储存介质
CN107194001A (zh) * 2017-06-14 2017-09-22 网宿科技股份有限公司 一种列式存储格式文件快速合并方法及其系统
CN108319652A (zh) * 2017-12-28 2018-07-24 浙江新再灵科技股份有限公司 一种基于hdfs的电梯数据的列式文件存储系统及方法

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020073687A1 (zh) * 2018-10-11 2020-04-16 平安科技(深圳)有限公司 流式数据列存储方法、装置、设备和存储介质
CN110187829A (zh) * 2019-04-22 2019-08-30 上海蔚来汽车有限公司 一种数据处理方法、装置、系统及电子设备
CN110162563B (zh) * 2019-05-28 2023-11-17 深圳市网心科技有限公司 一种数据入库方法、系统及电子设备和存储介质
CN110162563A (zh) * 2019-05-28 2019-08-23 深圳市网心科技有限公司 一种数据入库方法、系统及电子设备和存储介质
CN112181973A (zh) * 2019-07-01 2021-01-05 北京涛思数据科技有限公司 一种时序数据的存储方法
CN112181973B (zh) * 2019-07-01 2023-05-30 北京涛思数据科技有限公司 一种时序数据的存储方法
CN111159176A (zh) * 2019-11-29 2020-05-15 中国科学院计算技术研究所 一种海量流数据的存储和读取的方法和系统
CN110968585B (zh) * 2019-12-20 2023-11-03 深圳前海微众银行股份有限公司 面向列的存储方法、装置、设备及计算机可读存储介质
WO2021120952A1 (zh) * 2019-12-20 2021-06-24 深圳前海微众银行股份有限公司 面向列的存储方法、装置、设备及计算机可读存储介质
CN111104067B (zh) * 2019-12-20 2024-01-12 深圳前海微众银行股份有限公司 面向列的缓存方法、装置、设备及计算机可读存储介质
CN110968585A (zh) * 2019-12-20 2020-04-07 深圳前海微众银行股份有限公司 面向列的存储方法、装置、设备及计算机可读存储介质
CN111104067A (zh) * 2019-12-20 2020-05-05 深圳前海微众银行股份有限公司 面向列的缓存方法、装置、设备及计算机可读存储介质
CN112052239A (zh) * 2020-08-12 2020-12-08 网宿科技股份有限公司 数据封装方法、电子设备及存储介质
CN112052253A (zh) * 2020-08-12 2020-12-08 网宿科技股份有限公司 数据处理方法、电子设备及存储介质
CN112052239B (zh) * 2020-08-12 2024-02-27 网宿科技股份有限公司 数据封装方法、电子设备及存储介质
CN112052253B (zh) * 2020-08-12 2023-12-01 网宿科技股份有限公司 数据处理方法、电子设备及存储介质
CN113656362A (zh) * 2021-08-20 2021-11-16 中国银行股份有限公司 Spark流文件存储方法及装置
CN113656362B (zh) * 2021-08-20 2024-02-23 中国银行股份有限公司 Spark流文件存储方法及装置
CN114417408B (zh) * 2022-01-18 2022-11-11 百度在线网络技术(北京)有限公司 数据处理方法、装置、设备以及存储介质
CN114417408A (zh) * 2022-01-18 2022-04-29 百度在线网络技术(北京)有限公司 数据处理方法、装置、设备以及存储介质
CN115438114B (zh) * 2022-11-09 2023-03-24 浪潮电子信息产业股份有限公司 存储格式转换方法、系统、装置、电子设备及存储介质
CN115438114A (zh) * 2022-11-09 2022-12-06 浪潮电子信息产业股份有限公司 存储格式转换方法、系统、装置、电子设备及存储介质

Also Published As

Publication number Publication date
WO2020073687A1 (zh) 2020-04-16
CN109542889B (zh) 2023-07-21

Similar Documents

Publication Publication Date Title
CN109542889A (zh) 流式数据列存储方法、装置、设备和存储介质
US20230126005A1 (en) Consistent filtering of machine learning data
US11379755B2 (en) Feature processing tradeoff management
US10339465B2 (en) Optimized decision tree based models
US10338958B1 (en) Stream adapter for batch-oriented processing frameworks
US11182691B1 (en) Category-based sampling of machine learning data
US10318882B2 (en) Optimized training of linear machine learning models
US20150379072A1 (en) Input processing for machine learning
US20150379429A1 (en) Interactive interfaces for machine learning model evaluations
CN109597842A (zh) 数据实时计算方法、装置、设备及计算机可读存储介质
CN109656963A (zh) 元数据获取方法、装置、设备及计算机可读存储介质
Truskinger et al. Practical analysis of big acoustic sensor data for environmental monitoring
CA3176450A1 (en) Method and apparatus for implementing incremental data consistency
US20190095495A1 (en) Computerized methods and systems for grouping data using data streams
US8656225B2 (en) Network fault management in busy periods
CN108268468B (zh) 一种大数据的分析方法及系统
CN111966760B (zh) 基于Hive数据仓库的测试数据生成方法及装置
CN107871055B (zh) 一种数据分析方法和装置
CN108664657A (zh) 一种大数据任务调度方法、电子设备、存储介质及平台
Jassas et al. Analysis of job failure and prediction model for cloud computing using machine learning
CN103778223B (zh) 一种基于云平台的普适背单词系统及其构建方法
JP2016024486A (ja) データ活用システム及びその制御方法
CN110442782A (zh) 一种云资源检索方法与装置
CN113220530B (zh) 数据质量监控方法及平台
CN112199426B (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