CN115221116A - 一种数据写入方法、装置、设备及可读存储介质 - Google Patents
一种数据写入方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN115221116A CN115221116A CN202210889450.5A CN202210889450A CN115221116A CN 115221116 A CN115221116 A CN 115221116A CN 202210889450 A CN202210889450 A CN 202210889450A CN 115221116 A CN115221116 A CN 115221116A
- Authority
- CN
- China
- Prior art keywords
- data
- partition
- writing
- file system
- file
- 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/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/113—Details of archiving
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
Abstract
本申请公开了一种数据写入方法、装置、设备及可读存储介质,该方法包括Flink接收配置文件,并从配置文件中读取任务信息;根据任务信息,获取任务对应的数据;从数据中读取分区字段,并根据分区字段,将数据写入文件系统中对应的时间分区;若数据为延迟发送的数据,则将数据写入文件系统的历史分区。通过配置文件得到任务信息,并根据任务信息获取对应的数据。从数据中可以读取并基于分区字段,便可将数据写入文件系统中对应的时间分区。解决了具体如何将数据匹配性写入文件系统中的各个分区。此外,对于延迟数据,将其写入到文件系统的历史分区,可以避免延迟数据过多,全写入正常分区中导致机器的文件句柄打开过多造成的集群问题。
Description
技术领域
本申请涉及存储技术领域,特别是涉及一种数据写入方法、装置、设备及可读存储介质。
背景技术
将数据写入文件系统,常规的做法是使用flink内置封装的StreamingFileSink来进行实现。但是,在于分布式文件系统适配的过程中,仍然存在问题,如数据具体如何写入分布式文件系统中的分区,以及句柄打开过多等。
综上所述,如何有效地解决数据写入等问题,是目前本领域技术人员急需解决的技术问题。
发明内容
本申请的目的是提供一种数据写入方法、装置、设备及可读存储介质,能够有效解决数据写入问题。
为解决上述技术问题,本申请提供如下技术方案:
一种数据写入方法,包括:
Flink接收配置文件,并从所述配置文件中读取任务信息;
根据所述任务信息,获取任务对应的数据;
从所述数据中读取分区字段,并根据所述分区字段,将所述数据写入文件系统中对应的时间分区;
若所述数据为延迟发送的数据,则将所述数据写入所述文件系统的历史分区。
优选地,将所述数据写入文件系统中对应的时间分区,包括:
在所述数据的大小达到写入大小阈值,则执行将所述数据写入文件系统中对应的时间分区的步骤;
在所述数据大小未达到所述写入大小阈值的情况下,若超时未向所述文件系统写入数据,则执行将所述数据写入文件系统中对应的时间分区的步骤。
优选地,超时未向所述文件系统写入数据,包括:
若获取到定时产生的时钟数据,则确定超时未向所述文件系统写入数据。
优选地,所述接收配置文件,包括:
接收配置文件夹;所述任务文件夹包括至少两个任务分别对应的所述配置文件。
优选地,将所述数据写入文件系统中对应的时间分区,包括:
从数据库中获取所述数据对应的字段大小和字段类型;
按照所述字段大小和所述字段类型,将所述数据写入文件系统中对应的时间分区。
优选地,还包括:
从所述历史分区中读取暂存的延迟数据,并读取所述延迟数据的分区字段;
根据所述分区字段,将所述延迟数据写入所述文件系统中对应的时间分区。
优选地,若所述数据为延迟发送的数据,则将所述数据写入所述文件系统的历史分区,包括:
若在数据产生后指定时长内未获取到所述数据,则在获取到所述数据后,将所述数据写入所述历史分区。
优选地,将所述数据写入文件系统中对应的时间分区,包括:
将所述数据并行写入所述文件系统中的临时目录中;
在完成数据写入后,将所述数据转入分区目录。
一种数据写入装置,应用于Flink,包括:
信息获取模块,用于接收配置文件,并从所述配置文件中读取任务信息;
数据拉取模块,用于根据所述任务信息,获取任务对应的数据;
分区写入模块,用于从所述数据中读取分区字段,并根据所述分区字段,将所述数据写入文件系统中对应的时间分区;
合并写入模块,用于若所述数据为延迟发送的数据,则将所述数据写入所述文件系统的历史分区。
合并写入模块一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述数据写入方法的步骤。
一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述数据写入方法的步骤。
应用本申请实施例所提供的方法,Flink接收配置文件,并从配置文件中读取任务信息;根据任务信息,获取任务对应的数据;从数据中读取分区字段,并根据分区字段,将数据写入文件系统中对应的时间分区;若数据为延迟发送的数据,则将数据写入文件系统的历史分区。
在本申请中,通过配置文件得到任务信息,并根据任务信息获取对应的数据。从数据中可以读取到分区字段。基于该分区字段便可将数据写入文件系统中对应的时间分区。解决了具体如何将数据匹配性写入文件系统中的各个分区。此外,在数据被延迟发送,则直接将该数据写入到文件系统的历史分区,可以避免延迟数据过多,全部写入正常分区中导致机器的文件句柄打开过多造成的集群问题。
相应地,本申请实施例还提供了与上述数据写入方法相对应的数据写入装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中一种数据写入方法的实施流程图;
图2为本申请实施例中一种数据处理框架示意图;
图3为本申请实施例中一种数据写入装置的结构示意图;
图4为本申请实施例中一种电子设备的结构示意图;
图5为本申请实施例中一种电子设备的具体结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1,图1为本申请实施例中一种数据写入方法的流程图,该方法可以具体应用于Flink(一种分布式流数据流引擎)中。Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。此外,Flink的运行时本身也支持迭代算法的执行。
Flink可具体应用于如图2所示数据处理框架中充当数据消费者。
其中,Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。
如flume(一种高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume可提供对数据进行简单处理,并写到各种数据接受方的能力)的数据生产者将数据发送到kafka中后,kafka做中间件做缓冲之后,flink去消费,并且将消费的数据落地到Hadoop分布式文件系统或Hadoop分布式文件系统(Hadoop Distributed File System,hdfs,适合运行在通用硬件(commodity hardware)上的分布式文件系统(DistributedFile System))上,当然,也可将消费数据落地到分布式数据库(clickhouse),以及kudu和Tidb中,并且通过指定落地名称,完成自动化的接入和落地。
即,图2中数据的流转大致如下:
Flume进行采集机器落盘的文件日志将文件日志消息发送到kafka中,充当kafka的消息的生产者。
Kafka作为消息中间件,主要做数据缓冲的作用,防止大量数据突然写入,造成的消费不及时的数据丢失问题。
Flink这里充当kafka的消费者,主动拉取kafka中的数据,将数据写入到后端的存储组件hdfs中。
下面以将数据落地到分布式文件系统为例,对数据写入方法进行详细说明。该方法包括以下步骤:
S101、Flink接收配置文件,并从配置文件中读取任务信息。
在配置文件中配置每个任务的变更项。其中,任务具体指数据写入任务,变更项即指明数据对应哪个表,具体的读写位置等任务信息。每一个配置文件可以具体对应一个任务。
根据flink内置的工具类可以接收到该配置文件。得到配置文件之后,便可从配置文件中读取到任务信息。
S102、根据任务信息,获取任务对应的数据。
根据任务信息,可以从kafka中拉取到任务对应的数据。
S103、从数据中读取分区字段,并根据分区字段,将数据写入文件系统中对应的时间分区。
其中,分区字段可具体为分区标识,如5min(分钟),60min,24h(小时),或若不同分区具有各自编号,该分区字段可具体对应分区的编号,如01、02、03等编号。
可以预先基于时间进行分区划分。分区可以对应不同的时间,因而在本申请中将分区称之为时间分区。分区可以对应不同的时间,例如分区可对应5min(分钟)分区,60min分区,24h(小时)分区。
数据中具有分区字段,基于该分区字段,可明确当前数据应当被写入文件系统中的哪一个分区。具体的,可在flink的自定义hdfs-sink(分布式文件系统网关节点)中,将数据按照分区字段中的时间,将不同的数据放入不同的时间分区中。
S104、若数据为延迟发送的数据,则将数据写入文件系统的历史分区。
为了避开打开过多的句柄,还可设置一个历史分区。在有延迟数据的情况下,直接将对应数据写入到历史分区。
需要注意的是,该历史分区与时间分区中的任意一个分区在软硬件建构上可相同。由于历史分区中存储不同时间分区对应的延迟数据,因而该历史分区也可视为一个时间混合特殊时间分区。
当数据量比较大的情况下,数据传输需要进行排队,此时便可能存在部分数据被延迟发送,在本文中将其称之为延迟数据。也就是说,数据生成的时间与消费时间之间差异过大(具体可通过设置阈值的形式来确定),即可为延迟数据。
确定数据是否延迟的方式可以具体在数据中放置时间戳(或分区时间)和过期时间,基于该时间戳与过期时间,便可明确数据是否迟到。例如,若数据A的分区时间对应7:00—8:00,过期时间为2小时,则10:00后拉取到该数据,此时已满足过期数据,因而确定该数据过期,则可直接将该数据写入到历史分区。当然,确定数据是否延迟发送,或确定数据是否为延迟数据,还可根据数据的产生时间与获取到该数据的时间之间的时间差来而定。本申请仅需确定数据是否延迟即可,对于确定数据是否为延迟数据的具体实现方式并不限定。
需要注意的是,对于延迟数据,则在执行步骤S102得到数据后,需先执行步骤S104,而后再执行步骤S103;对于正常抵达的数据,则在执行步骤S102得到数据后,直接执行步骤S103。
应用本申请实施例所提供的方法,Flink接收配置文件,并从配置文件中读取任务信息;根据任务信息,获取任务对应的数据;从数据中读取分区字段,并根据分区字段,将数据写入文件系统中对应的时间分区;若数据为延迟发送的数据,则将数据写入文件系统的历史分区。
在本申请中,通过配置文件得到任务信息,并根据任务信息获取对应的数据。从数据中可以读取到分区字段。基于该分区字段便可将数据写入文件系统中对应的时间分区。解决了具体如何将数据匹配性写入文件系统中的各个分区。此外,在数据被延迟发送,则直接将该数据写入到文件系统的历史分区,可以避免延迟数据过多,全部写入正常分区中导致机器的文件句柄打开过多造成的集群问题。
需要说明的是,基于上述实施例,本申请实施例还提供了相应的改进方案。在优选/改进实施例中涉及与上述实施例中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在本文的优选/改进实施例中不再一一赘述。
在本申请中的具体实施方式中,步骤S104中的将数据写入文件系统中对应的时间分区,具体包括:
在数据的大小达到写入大小阈值,则执行将数据写入文件系统中对应的时间分区的步骤;
在数据大小未达到写入大小阈值的情况下,若超时未向文件系统写入数据,则执行将数据写入文件系统中对应的时间分区的步骤。
即,在将数据写入到文件系统中时,可以按照批次地向文件系统进行数据写入。即,在数据的大小达到写入大小阈值后,可以直接将数据写入到文件系统中对应的时间分区。
特别地,为了避免打开句柄过多造成集群出现问题,还可以在数据大小没有达到写入大小阈值,但超时未向文件系统写入数据,将数据写入文件系统中的对应时间分区。其中,可通过设置一个时间阈值来确定是否超时,也可以维护一个定期时钟来确定是否超时。例如,可以具体为距离上次数据写入的时间大于预设阈值,也可以为数据的产生时间(可以在数据中增加一个数据产生对应的时间戳,基于时间戳确定产生时间)大于预设阈值。
在本申请中的一种具体实施方式中,可以设置一个推动时间流的数据(本文称之为时钟数据),用于数据在一个batch(对应写入大小阈值)或者interval-time(写入间隔时间)内,数据仍然没达到阈值的情况,可能后期都没有数据来,但是保证数据不丢失,来推动时间使得数据能正常刷写到后端存储中,可避免长时间达不到阈值进行落盘。也就是说,若获取到定时产生的时钟数据,则确定超时未向文件系统写入数据。
例如,flink按照一个固定的时间(如5S秒)生成时钟数据,该推动时间流的数据的目的是让系统能获取时间,当时间超过阈值之后就直接将数据写入到存储中。当然,该时钟数据可以由kafka等设备产生后发送给flink。
在本申请中的一种具体实施方式中,还可以多个任务共用集群的CPU,从而达到节约资源的目的。具体的,在实施步骤S101接收配置文件,具体包括:接收配置文件夹;任务文件夹包括至少两个任务分别对应的配置文件。
具体的,通过配置文件的形式,来配置每个任务的变更项。并且根据flink内置的工具类可以提交一个文件夹的形式,作为一个任务来共用机器的CPU。达到节省资源的目的。即,该工具类能够将文件夹内容纳的多个配置文件一次性提交,使得flink将多个配置文件的多个任务当作一个任务并行处理。
在本申请中的一种具体实施方式中,可以支持Avro格式数据。具体的,步骤S102根据任务信息,获取任务对应的数据,包括:从任务信息对应的kafka集群中,获取Avro格式数据,并对Avro格式数据进行反序列化处理,得到数据。
其中,Avro格式是Hadoop的一种基于行的存储格式,被广泛用作序列化平台。Avro格式具有落地区的数据通常被整体读取,以供下游系统进一步处理(这种情况下基于行的格式效率更高);下游系统可以轻松地从Avro文件中检索表模式(无需将模式单独存储在外部元存储中);任何源模式更改都很容易处理(模式演变)。
kafka集群内存储的数据为序列化数据,因而拉取到对应数据后需进行反序列化处理。反序列化处理的具体实现可以参照相关实现方案,在此不再一一赘述。
在本申请的一种具体实施方式中,步骤S103将数据写入文件系统中对应的时间分区,包括:
步骤一、从数据库中获取数据对应的字段大小和字段类型;
步骤二、按照字段大小和字段类型,将数据写入文件系统中对应的时间分区。
为便于描述,下面将上述两个步骤结合起来进行说明。
对于写入之前,hdfs的表中的元数据存在于mysql(数据库)中,那么对于写入的字段和类型的映射问题,通过访问mysql的元数据就可以自动根据字段的大小和类型来做自动映射。通过MYSQL获取到HDFS的数据格式,方便在往HDFS中写入的时候能够直接取得对应的文件格式。即从数据库中获取到数据对应的字段大小和字段类型。基于该字段大小和字段类型即可实现对应的数据写入。
在本申请的一种具体实施方式中,步骤S104若数据迟到,则将数据写入文件系统的历史分区,具体包括:若在数据产生后指定时长内未获取到数据,则在获取到数据后,将数据写入历史分区。具体的,可从数据中读取时间信息;利用时间信息,确定数据是否为延迟数据;如果是,则将数据写入文件系统的历史分区。
其中,时间信息可具体为分区时间和过期时间。即从数据中读取到时间分区,基于分区时间与过期时间,则可以确定数据是否迟到。如果数据迟到,为了避免打开过多的文件句柄,则可以将数据写入到文件系统的历史分区。
进一步地,在将数据写入文件系统的历史分区之后,为了便于数据管理,还可将该历史分区的数据读取出来存入对应的时间分区。具体的实现,包括:
步骤一、从历史分区中读取暂存的延迟数据,并读取延迟数据的分区字段。
步骤二、根据分区字段,将延迟数据写入文件系统中对应的时间分区。
可以定期或在历史分区的数量达到阈值的情况下,按照先入先出的顺序,从历史分区中读取暂存的数据(为便于区别,此文将此数据称之为延迟数据),并通过读取该延迟数据中的分区字段,明确其正常所属的时间分区。具体如何根据分区字段将延迟数据写入文件系统中对应的时间分区,可以具体参照上文描述,在此不再一一赘述。
在本申请中的一种具体实施方式中,步骤S103将数据写入文件系统中对应的时间分区,包括:
步骤一、将数据并行写入文件系统中的临时目录中;
步骤二、在完成数据写入后,将数据转入分区目录。
可以预先设置一个staging目录(临时目录)。当有数据写入时,可以先写入到一个staging目录中,类似与hadoop原生的mapreduce程序,数据刷写完成或者任务cancel时会调用方法将临时的staging目录下的临时文件写入到正式的分区目录中。也就是说,将写入的数据先预先存储到一个临时文件夹,写入完成后再更改目录,能够有效防止提前展示不完整的数据。
为便于本领域技术人员更好地理解和实施上述方法实施例所提供的数据写入方法,下面对上述各方法中的关键内容进行详细说明。
在flink的自定义hdfs-sink中,将数据按照字段中的时间,将不同的数据放入不同的分区中。假设数据的分区时间是5分钟,过期时间是2个小时。如果当前数据是2个小时内的数据,那么将进入滚动的5分钟分区中,如果不是2个小时内的数据,那么将会进入到history(历史分区)的文件路径中。后期通过动态分区查询到各个分区中,以补足各个分区的数据。
其中,过期时间可避免打开文件过多。
请参考图2,数据从产生到消费的过程如下:
Flume采集业务端/服务器端的日志文件或者udp协议(User Datagram Protocol,用户数据报协议)等的数据,作为生产者将数据格式包装成avro格式发到kafka中。
Kafka作为整个系统的缓冲,将数据存储在kafka broker中。
Flink作为消费者,拉取kafka中的数据,将包括数据avro格式的数据拉取出来,然后通过自定义的sink,将数据写入到不同的存储后端中。
将数据写入hdfs,常规的做法是使用flink内置封装的StreamingFileSink来进行实现或者使用flume的hdfs-sink去实现,但是会存在对于大的数据量,写入速率慢的问题,并且存在数据丢失的情况。采用上述方法实施例所描述的数据写入方法进行自定义实现parquet-sink,相较于使用原生的parquetwriter去写入数据,写入速率比StreamingFileSink快很多。
其中,Parquet-sink步骤:
首先通过配置文件的形式,来配置每个任务的变更项。并且根据flink内置的工具类可以提交一个文件夹的形式,作为一个任务来共用机器的cpu。达到节省资源的目的。
通过配置文件读取对应的kafka集群获取avro,string或者其他类型的数据,并且对数据进行反序列化。
设置一个推动时间流的数据,用于数据在一个batch或者interval-time时间内,数据仍然没达到阈值的情况,为保证数据不丢失,来推动时间使得数据能正常刷写到后端存储中,能够避免长时间达不到阈值进行落盘。
对于写入之前,hdfs的表中的元数据存在于mysql中,那么对于写入的字段和类型的映射问题,通过访问mysql的元数据可以自动根据字段的大小和类型来做自动映射。
根据指定的数据中的分区字段,将数据划分到对应的分区中,如5min分区,60min分区,24h分区。根据数据实际的时间将数据划分到对应的分区中;并且设置历史分区,数据时间迟到时间是设置的时间之内,那么就会写入到正常分区中,如果迟到数据过久就需要把数据写入到history分区中。可以避免延迟数据过多,全部写入正常分区中导致机器的文件句柄打开过多造成的集群问题。
对于写入部分,首先会写入到一个staging目录中,类似与hadoop原生的mapreduce程序,数据刷写完成或者任务cancel时会调用方法将临时的staging目录下的临时文件写入到正式的分区目录中,可以有效防止提前展示数据。
相应地,Clickhouse-sink步骤:
同上通过配置文件的形式来设置任务以及时间流来推动数据。
通过访问clickhouse中的表来获取到表的元数据。返回schema给程序,然后通过jdbc协议去插入数据到clickhouse中。
通过clickhouse的原生jdbc写入将数据写入到clickhouse的库中。这里做过相应的测试,使用第三方的包的速率会比使用原生包的速率在压测情况下慢300w/min。
也就是说,本申请可以自定义实现flink到各个sink数据端的pipline,并且自定义实现了平台需要的各种功能,且具备以下优点:
1、由于flink,异步分布式快照check point,保障数据一致性,因而写入的速率比flume的速率快很多,并且不会出现数据丢失的情况。
2、通过控制写入时间和写入的文件大小来限每个线程写入的文件的大小。
3、自动获取表的各种元信息之后,自动做好字段和类型映射关系,将数据写入到文件中。
4、会对数据的分区进行区分,防止程序打开的文件句柄过多造成的集群问题。
相应于上面的方法实施例,本申请实施例还提供了一种数据写入装置,下文描述的数据写入装置与上文描述的数据写入方法可相互对应参照。
参见图3所示,该装置应用于Flink,包括以下模块:
信息获取模块101,用于接收配置文件,并从配置文件中读取任务信息;
数据拉取模块102,用于根据任务信息,获取任务对应的数据;
分区写入模块103,用于从数据中读取分区字段,并根据分区字段,将数据写入文件系统中对应的时间分区;
合并写入模块104,用于若数据为延迟发送的数据,则将数据写入文件系统的历史分区合并写入模块。
应用本申请实施例所提供的装置,Flink接收配置文件,并从配置文件中读取任务信息;根据任务信息,获取任务对应的数据;从数据中读取分区字段,并根据分区字段,将数据写入文件系统中对应的时间分区;若数据为延迟发送的数据,则将数据写入文件系统的历史分区。
在本申请中,通过配置文件得到任务信息,并根据任务信息获取对应的数据。从数据中可以读取到分区字段。基于该分区字段便可将数据写入文件系统中对应的时间分区。解决了具体如何将数据匹配性写入文件系统中的各个分区。此外,在数据被延迟发送,则直接将该数据写入到文件系统的历史分区,可以避免延迟数据过多,全部写入正常分区中导致机器的文件句柄打开过多造成的集群问题。
在本申请的一种具体实施方式中,分区写入模块103,具体用于在数据的大小达到写入大小阈值,则执行将数据写入文件系统中对应的时间分区的步骤;
在数据大小未达到写入大小阈值的情况下,若超时未向文件系统写入数据,则执行将数据写入文件系统中对应的时间分区的步骤。
在本申请的一种具体实施方式中,超时未向文件系统写入数据,包括:
若获取到定时产生的时钟数据,则确定超时未向文件系统写入数据
在本申请的一种具体实施方式中,信息获取模块101,用于接收配置文件夹;任务文件夹包括至少两个任务分别对应的配置文件。
在本申请的一种具体实施方式中,分区写入模块103,具体用于从数据库中获取数据对应的字段大小和字段类型;
按照字段大小和字段类型,将数据写入文件系统中对应的时间分区。
在本申请的一种具体实施方式中,还包括:
数据回归处理模块,用于从历史分区中读取暂存的延迟数据,并读取延迟数据的分区字段;
根据分区字段,将延迟数据写入文件系统中对应的时间分区。
在本申请的一种具体实施方式中,合并写入模块104,具体用于若在数据产生后指定时长内未获取到数据,则在获取到数据后,将数据写入历史分区。
在本申请的一种具体实施方式中,分区写入模块103,具体用于将数据并行写入文件系统中的临时目录中;
在完成数据写入后,将数据转入分区目录。
相应于上面的方法实施例,本申请实施例还提供了一种电子设备,下文描述的一种电子设备与上文描述的一种数据写入方法可相互对应参照。
参见图4所示,该电子设备包括:
存储器332,用于存储计算机程序;
处理器322,用于执行计算机程序时实现上述方法实施例的数据写入方法的步骤。
具体的,请参考图5,图5为本实施例提供的一种电子设备的具体结构示意图,该电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储器332通信,在电子设备301上执行存储器332中的一系列指令操作。
电子设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。
上文所描述的数据写入方法中的步骤可以由电子设备的结构实现。
相应于上面的方法实施例,本申请实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种数据写入方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的数据写入方法的步骤。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
Claims (11)
1.一种数据写入方法,其特征在于,包括:
Flink接收配置文件,并从所述配置文件中读取任务信息;
根据所述任务信息,获取任务对应的数据;
从所述数据中读取分区字段,并根据所述分区字段,将所述数据写入文件系统中对应的时间分区;
若所述数据为延迟发送的数据,则将所述数据写入所述文件系统的历史分区。
2.根据权利要求1所述的数据写入方法,其特征在于,将所述数据写入文件系统中对应的时间分区,包括:
在所述数据的大小达到写入大小阈值,则执行将所述数据写入文件系统中对应的时间分区的步骤;
在所述数据大小未达到所述写入大小阈值的情况下,若超时未向所述文件系统写入数据,则执行将所述数据写入文件系统中对应的时间分区的步骤。
3.根据权利要求2所述的数据写入方法,其特征在于,超时未向所述文件系统写入数据,包括:
若获取到定时产生的时钟数据,则确定超时未向所述文件系统写入数据。
4.根据权利要求1所述的数据写入方法,其特征在于,所述接收配置文件,包括:
接收配置文件夹;所述任务文件夹包括至少两个任务分别对应的所述配置文件。
5.根据权利要求1所述的数据写入方法,其特征在于,将所述数据写入文件系统中对应的时间分区,包括:
从数据库中获取所述数据对应的字段大小和字段类型;
按照所述字段大小和所述字段类型,将所述数据写入文件系统中对应的时间分区。
6.根据权利要求1所述的数据写入方法,其特征在于,还包括:
从所述历史分区中读取暂存的延迟数据,并读取所述延迟数据的分区字段;
根据所述分区字段,将所述延迟数据写入所述文件系统中对应的时间分区。
7.根据权利要求1所述的数据写入方法,其特征在于,若所述数据为延迟发送的数据,则将所述数据写入所述文件系统的历史分区,包括:
若在数据产生后指定时长内未获取到所述数据,则在获取到所述数据后,将所述数据写入所述历史分区。
8.根据权利要求1至7任一项所述的数据写入方法,其特征在于,将所述数据写入文件系统中对应的时间分区,包括:
将所述数据并行写入所述文件系统中的临时目录中;
在完成数据写入后,将所述数据转入分区目录。
9.一种数据写入装置,其特征在于,应用于Flink,包括:
信息获取模块,用于接收配置文件,并从所述配置文件中读取任务信息;
数据拉取模块,用于根据所述任务信息,获取任务对应的数据;
分区写入模块,用于从所述数据中读取分区字段,并根据所述分区字段,将所述数据写入文件系统中对应的时间分区;
合并写入模块,用于若所述数据为延迟发送的数据,则将所述数据写入所述文件系统的历史分区。
10.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至8任一项所述数据写入方法的步骤。
11.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述数据写入方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210889450.5A CN115221116A (zh) | 2022-07-25 | 2022-07-25 | 一种数据写入方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210889450.5A CN115221116A (zh) | 2022-07-25 | 2022-07-25 | 一种数据写入方法、装置、设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115221116A true CN115221116A (zh) | 2022-10-21 |
Family
ID=83614669
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210889450.5A Pending CN115221116A (zh) | 2022-07-25 | 2022-07-25 | 一种数据写入方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115221116A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115904369A (zh) * | 2022-11-02 | 2023-04-04 | 长扬科技(北京)股份有限公司 | 一种网络安全源数据高效聚合及关联分析的方法与系统 |
-
2022
- 2022-07-25 CN CN202210889450.5A patent/CN115221116A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115904369A (zh) * | 2022-11-02 | 2023-04-04 | 长扬科技(北京)股份有限公司 | 一种网络安全源数据高效聚合及关联分析的方法与系统 |
CN115904369B (zh) * | 2022-11-02 | 2023-10-13 | 长扬科技(北京)股份有限公司 | 一种网络安全源数据高效聚合及关联分析的方法与系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109582466B (zh) | 一种定时任务执行方法、分布式服务器集群及电子设备 | |
CN110321387B (zh) | 数据同步方法、设备及终端设备 | |
CN109918349B (zh) | 日志处理方法、装置、存储介质和电子装置 | |
CN107038162B (zh) | 基于数据库日志的实时数据查询方法和系统 | |
US10338958B1 (en) | Stream adapter for batch-oriented processing frameworks | |
WO2016206600A1 (zh) | 一种信息流数据的处理方法和装置 | |
CN112507029B (zh) | 数据处理系统及数据实时处理方法 | |
CN106325984B (zh) | 一种大数据任务调度装置 | |
CN112800017B (zh) | 分布式日志采集方法、装置、介质及电子设备 | |
CN111881116A (zh) | 数据迁移方法、数据迁移系统、计算机系统和存储介质 | |
CN112328702B (zh) | 数据同步方法及系统 | |
CN107943618B (zh) | 仿真系统的数据快速恢复方法及存储介质 | |
Liu et al. | Optimizing shuffle in wide-area data analytics | |
CN115587118A (zh) | 任务数据的维表关联处理方法及装置、电子设备 | |
CN115221116A (zh) | 一种数据写入方法、装置、设备及可读存储介质 | |
CN111177237A (zh) | 一种数据处理系统、方法及装置 | |
CN116304390B (zh) | 时序数据处理方法、装置、存储介质及电子设备 | |
CN111078418B (zh) | 操作同步方法、装置、电子设备及计算机可读存储介质 | |
EP3396553B1 (en) | Method and device for processing data after restart of node | |
US9465621B2 (en) | Priority activation of metrology driver in boot sequence | |
CN111026764B (zh) | 一种数据存储方法、装置、电子产品及存储介质 | |
CN113407629A (zh) | 数据同步的方法、装置、电子设备及存储介质 | |
US9027035B2 (en) | Non real-time metrology data management | |
TWI735519B (zh) | 分散式環境協調消費隊列方法和裝置 | |
EP4066117B1 (en) | Managing provenance information for data processing pipelines |
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 |