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

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

Info

Publication number
CN109542889B
CN109542889B CN201811182661.5A CN201811182661A CN109542889B CN 109542889 B CN109542889 B CN 109542889B CN 201811182661 A CN201811182661 A CN 201811182661A CN 109542889 B CN109542889 B CN 109542889B
Authority
CN
China
Prior art keywords
data
format
processed
row
real
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.)
Active
Application number
CN201811182661.5A
Other languages
English (en)
Other versions
CN109542889A (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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

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(filena me)将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("strea m","year","month","day","hour").orc("orc"),指的是根据stream,ye ar,month,day字段来进行路径的分割。
partitionBy是分析性函数的一部分,它和聚合函数groupBy不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,partitionBy用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组,partitionBy返回的是分组里的每一条数据,并且可以对分组数据进行排序操作。
本实施例,通过使用partitionBy函数实现了对存储路径的分割,方便了后续对大量数据的处理。
一种流式数据列存储装置,如图5所示,包括如下模块:
数据获取模块,设置为从实时消息系统中读取数据,得到待处理数据;
数据解析模块,设置为对所述待处理数据进行解析,得到结构化数据;
数据转换模块,设置为将所述结构化数据转换为Row格式数据,每将一组所述结构化数据转换为Row格式数据后,即存入内存中;
数据存储模块,设置为将所述内存中存入的多行所述Row格式数据组成Dataset<Row>格式数据,通过列存储的格式写入文件系统。
在一个实施例中,提出了一种计算机设备,包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行计算机可读指令时实现上述各实施例中所述的流式数据列存储方法的步骤。
在一个实施例中,提出了一种存储有计算机可读指令的存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述各实施例中所述的流式数据列存储方法的步骤。其中,所述存储介质可以为非易失性存储介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁盘或光盘等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明一些示例性实施例,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (6)

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

Families Citing this family (13)

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

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727465A (zh) * 2008-11-03 2010-06-09 中国移动通信集团公司 分布式列存储数据库索引建立、查询方法及装置与系统
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 (6)

* 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
US8069190B2 (en) * 2007-12-27 2011-11-29 Cloudscale, Inc. System and methodology for parallel stream processing
US8756538B2 (en) * 2012-02-20 2014-06-17 International Business Machines Corporation Parsing data representative of a hardware design into commands of a hardware design environment
US9876507B2 (en) * 2013-02-22 2018-01-23 Sap Se Semantic compression of structured data
US8977600B2 (en) * 2013-05-24 2015-03-10 Software AG USA Inc. System and method for continuous analytics run against a combination of static and real-time data
CN109542889B (zh) * 2018-10-11 2023-07-21 平安科技(深圳)有限公司 流式数据列存储方法、装置、设备和存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727465A (zh) * 2008-11-03 2010-06-09 中国移动通信集团公司 分布式列存储数据库索引建立、查询方法及装置与系统
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的电梯数据的列式文件存储系统及方法

Also Published As

Publication number Publication date
WO2020073687A1 (zh) 2020-04-16
CN109542889A (zh) 2019-03-29

Similar Documents

Publication Publication Date Title
CN109542889B (zh) 流式数据列存储方法、装置、设备和存储介质
CN106202235B (zh) 一种数据处理方法及装置
CN106656536B (zh) 一种用于处理服务调用信息的方法与设备
CN107038218B (zh) 报表处理方法和系统
CN113688288B (zh) 数据关联分析方法、装置、计算机设备和存储介质
CN108363654B (zh) 系统日志的协处理方法、系统及电子设备
CN109359109B (zh) 一种基于分布式流计算的数据处理方法及系统
CN110442439B (zh) 任务进程处理方法、装置和计算机设备
CN112347355A (zh) 数据处理方法、装置、服务器及存储介质
CN113297245A (zh) 获取执行信息的方法及装置
CN110019045B (zh) 日志落地方法及装置
CN113220530B (zh) 数据质量监控方法及平台
CN114265883A (zh) 一种实时数据治理的方法、设备、存储介质
CN111563123B (zh) 一种hive仓库元数据实时同步方法
CN113656445A (zh) 数据处理方法、装置、电子设备及存储介质
CN109063201B (zh) 一种基于混合存储方案的impala在线交互式查询方法
CN112380139A (zh) 测试用例过程文档的记录方法及系统、设备及存储介质
CN110188069A (zh) 一种csv文件存储方法、装置及计算机设备
CN111552674A (zh) 日志处理方法及设备
CN116483837A (zh) 一种数据集成方法、装置、设备及介质
CN116431366B (zh) 行为路径分析方法、系统、存储端、服务端及客户端
CN112364007B (zh) 基于数据库的海量数据交换方法、装置、设备和存储介质
CN117193750B (zh) 一种基于CraphQL的全栈低代码平台实现方法
CN113485693B (zh) 接口配置方法、装置、设备及存储介质
CN110413583B (zh) 一种基于flume系统的日志监控方法、装置及服务器

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