CN112231293A - 文件读取方法、装置、电子设备和存储介质 - Google Patents

文件读取方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN112231293A
CN112231293A CN202010961161.2A CN202010961161A CN112231293A CN 112231293 A CN112231293 A CN 112231293A CN 202010961161 A CN202010961161 A CN 202010961161A CN 112231293 A CN112231293 A CN 112231293A
Authority
CN
China
Prior art keywords
file
merged
files
original
client
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
Application number
CN202010961161.2A
Other languages
English (en)
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.)
Hangzhou Dt Dream Technology Co Ltd
Original Assignee
Hangzhou Dt Dream Technology 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 Hangzhou Dt Dream Technology Co Ltd filed Critical Hangzhou Dt Dream Technology Co Ltd
Priority to CN202010961161.2A priority Critical patent/CN112231293A/zh
Publication of CN112231293A publication Critical patent/CN112231293A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP

Landscapes

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

Abstract

本申请提出一种文件读取方法、装置、电子设备和存储介质,其中,方法包括:响应于接收到的读取指令,获取当前周期分布式文件系统表目录下的至少两个待读取的原始文件;在至少两个原始文件满足预设合并策略时,合并至少两个原始文件以生成至少一个合并文件;在原始文件全部完成合并时,根据合并文件更新分布式文件系统中的表目录,以便于客户端根据更新后的表目录提供文件读取服务。由此,当读取的文件中存在大量原始文件时,实现对原始文件的合并,提高对分布式文件系统的内存利用率,提高了文件读取效率,且在合并文件过程中,不影响数据库的数据读取任务的执行。

Description

文件读取方法、装置、电子设备和存储介质
技术领域
本申请涉及数据处理技术领域,尤其涉及一种文件读取方法、装置电子设备和存储介质。
背景技术
在文件读取时,以分布式文件系统(The Hadoop Distributed File System,HDFS)作为存储系统,以Apache Spark作为结构化查询语言执行引擎搭建分布式数据仓库是业界一种比较普遍的技术方案。
相关技术中,数据仓库的数据一般通过外部工具导入分布式文件系统,随着数据仓库用户对数据实时性要求的提高,导入工具一般会采用频繁写入原始文件的方式使HDFS能及时读取到新的数据。
然而,随着数仓中原始文件数量的累积,HDFS存储大量原始文件时吞吐量降低,存储节点压力骤增等问题会逐渐暴露出来。另外,大量的原始文件也会影响文件读取的效率。
发明内容
本申请旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本申请的第一个目的在于提出一种文件读取方法,以实现对原始文件的合并,提高对分布式文件系统的内存利用率,提高了文件读取效率,且在合并文件过程中,不影响数据库的数据读取任务的执行。
本申请的第二个目的在于提出一种文件读取装置。
本申请的第三个目的在于一种电子设备。
本申请的第四个目的在于提出一种非临时性计算机可读存储介质。
为达上述目的,本申请第一方面实施例提出了一种文件读取方法,包括以下步骤:响应于接收到的读取指令,获取当前周期分布式文件系统表目录下待读取的至少两个原始文件;在所述至少两个原始文件满足预设合并策略时,合并所述至少两个原始文件以生成至少一个合并文件;在所述原始文件全部完成合并时,根据所述合并文件更新所述分布式文件系统中的表目录,以便于客户端根据更新后的表目录提供文件读取服务。
为达上述目的,本申请第二方面实施例提出了一种文件读取装置,包括:获取模块,用于响应于接收到的读取指令,获取当前周期分布式文件系统表目录下待读取的至少两个原始文件;合并模块,用于在所述至少两个原始文件满足预设合并策略时,合并所述至少两个原始文件以生成至少一个合并文件;第一更新模块,用于在所述原始文件全部完成合并时,根据所述合并文件更新所述分布式文件系统中的表目录,以便于客户端根据更新后的表目录提供文件读取服务。
为达上述目的,本申请第三方面实施例提出了一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序,所述处理器执行所述程序时,实现如上述第一方面描述的文件读取方法。
为了实现上述目的,本申请第四方面实施例提出了一种非临时性计算机可读存储介质,当所述存储介质中的指令由处理器被执行时,使得能够执行实现如上述第一方面描述的文件读取方法。
本申请提供的技术方案,至少包括如下技术效果:
响应于接收到的读取指令,获取当前周期分布式文件系统表目录下的至少两个待读取的原始文件,在至少两个原始文件满足预设合并策略时,合并至少两个原始文件以生成至少一个合并文件,进而,在原始文件全部完成合并时,根据合并文件更新分布式文件系统中的表目录,以便于客户端根据更新后的表目录提供文件读取服务。由此,解决分布式数据库底层文件系统文件碎片化问题的同时,提高了分布式数据库的查询效率,当读取的文件中存在大量原始文件时,实现对原始文件的合并,提高对分布式文件系统的内存利用率,提高了文件读取效率,且在合并文件过程中,不影响数据库的数据读取任务的执行。
本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请实施例所提供的一种文件读取方法的流程示意图;
图2为本申请实施例所提供的另一种文件读取方法的流程示意图;
图3为本申请实施例所提供的一种文件读取方法的场景示意图;
图4是根据本申请又一个实施例的文件读取方法的流程图;
图5为本申请实施例所提供的又一种文件读取方法的场景示意图;
图6-1为本申请实施例所提供的还一种文件读取方法的场景示意图;
图6-2为本申请实施例所提供的再一种文件读取方法的场景示意图;
图7是根据本申请第一个实施例的文件读取装置的结构示意图;
图8是根据本申请第二个实施例的文件读取装置的结构示意图;
图9是根据本申请第三个实施例的文件读取装置的结构示意图;
图10是根据本申请第四个实施例的文件读取装置的结构示意图;
图11是根据本申请第五个实施例的文件读取装置的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
为了解决当文件大量的原始文件写入时,导致文件的读取效率低下、分布式文件系统的存储压力增大导致存储效率低下的技术问题,本申请提出了一种文件读取的方式,可以以合并原始文件的方式来存储文件,提高了存储效率,并且以合并文件的方式来支持文件服务任务,提高了文件读取效率,且在本实施例中,在合并文件的过程中,既不打断之前的文件读取任务,也不会导致文件丢失。
下面参考附图描述本申请实施例的文件读取方法、装置、电子设备和存储介质。
图1为本申请实施例所提供的一种文件读取方法的流程示意图。如图1所示,该文件读取方法,包括:
步骤101,响应于接收到的读取指令,获取当前周期分布式文件系统表目录下待读取的至少两个原始文件。
具体的,周期性的读取当前分布式文件系统中存储的文件,即根据预设的周期,读取分布式文件系统的表目录获取当前周期的两个待读取的原始文件,其中,预设的读取周期可以根据数据仓库中的文件导入频率等确定,也可以根据大量数据来标定,其中,当前周期的存储文件可以理解为当前周期下分布式文件系统新获取的存储的文件。
步骤102,在至少两个原始文件满足预设合并策略时,合并至少两个原始文件以生成至少一个合并文件。
应当理解的是,当至少两个原始文件中包含了大量的原始文件时,会对分布式文件系统的内存造成浪费等,因此,在本实施例中,设置预设合并策略,该预设合并策略用于发现至少两个原始文件是否可以合并生成合并文件。
具体而言,在不同的应用场景中,预设合并策略不同,示例说明如下:
示例一:
在本示例中,如图2所示,在至少两个原始文件满足预设合并策略时,合并至少两个原始文件以生成至少一个合并文件,包括:
步骤201,获取原始文件的文件大小,计算当前周期所有原始文件的文件大小的均值。
在本实施例中,获取原始文件的文件大小,该文件大小可以为所有的原始文件占用的总内存等,计算当前周期所有文件的文件大小均值,可以理解为总内存与原始文件数量的比值。
步骤202,当均值小于等于预设阈值时,合并至少两个原始文件以生成至少一个合并文件。
在本实施例中,预先根据实验数据设置预设阈值,当均值大于等于预设阈值时,表明原始文件所占的容量较大,为了降低内存占有率,合并至少两个原始文件以生成至少一个合并文件。
示例二:
在本示例中,为了避免个别原始文件较大,提高了文件大小的均值,但是很多其他原始文件大小不大,无需合并的场景,在本实施例中,获取每个原始文件的大小,其中,可以根据预设的文件大小识别工具等,获取每个原始文件的文件大小,判断每个原始文件的文件大小是否小于预设阈值,其中,预设阈值可以根据实验数据标定,比如可以为64MB等。
进而,若小于预设阈值,则统计小于预设阈值的原始文件的数量。
容易理解的是,当原始文件中包含原始文件,但是包含的小原始文件的数量不多时,为了提高存储效率,可能也不对相关原始文件进行合并,因此,在确定出大小小于预设阈值的存储文件后,进一步统计小于预设阈值的存储文件的数量。判断该数量是否大于预设数量阈值,其中,预设数量阈值可以根据实验数据标定,也可以根据分布式文件系统的当前内存剩余量确定,内存剩余量越少,则对应的预设数量阈值越少,具体确定时,可以预先构建内存剩余量和预设数量阈值对应关系,基于该对应关系来确定预设数量阈值。
若大于预设数量阈值,则认为至少两个原始文件满足预设的合并策略。
在确定出至少两个原始文件满足预设合并策略候,为了降低对分布式文件系统的内存的存储压力,合并至少两个原始文件以生成至少一个合并文件,其中,合并至少两个原始文件以生成至少一个合并文件的方式可以根据应用场景的不同而不同,示例如下:
示例一:
在本示例中,合并方式为根据分布式文件系统的规定合并大小来合并原始文件,即将至少两个原始文件合并为固定大小的不同的合并文件。
示例二:
在本示例中,合并方式为确定原始文件的文件大小,对文件大小所属于的大小范围确定合并的原始文件的数量,从而,将对应大小范围的原始文件,合并对应数量的原始文件来生成合并文件,比如,对文件大小所属于的大小范围为A时,对应的合并的原始文件的数量为2,则将大小范围为A的原始文件,2个合并为一个合并文件,当然,在合并过程中,当剩余的原始文件不足对应的合并要求的数量时,可以将该原始文件与其他剩余原始文件合并等。
步骤103,在原始文件全部完成合并时,根据合并文件更新分布式文件系统中的表目录,以便于客户端根据更新后的表目录提供文件读取服务。
其中,客户端可以为任意支持文件读取的服务器,也可以是现有技术中常用的结构化查询语言(Structured Query Language,SQL)数据库引擎所在的客户端等。
具体的,在合并文件生成后,根据至少一个合并文件更新分布式文件系统中的表目录,这里的更新可以理解将表目录中原有的原始文件删除替换为合并文件,举例而言,如图3所示,当表目录中原有的原始文件为F1、F2和F3时,生成的合并文件为M1和M2,则这里的更新是将表目录中的F1、F2和F3更新为对应的M1和M2。
当然,在更新表目录时,为了避免文件的丢失,需要在合并文件全部合并完成后才更新表目录。
在本实施例中,在合并合并至少两个原始文件以生成至少一个合并文件之后,在至少一个合并文件中的每个合并文件合并生成后,将合并生成的合并文件保存至分布式文件系统的工作目录,进而,判断至少一个合并文件是否全部发送至工作目录,若是,则在工作目录中生成与至少一个合并文件对应的标识文件,其中,判断至少一个合并文件是否全部发送至工作目录方式可以是预先构建原始文件的文件列表和合并文件的文件列表的对应关系表,将该对应关系表在全部合并完成后,作为标识文件保存到工作目录。
当然,在一些其他的示例中,也可以针对每个周期的合并文件生成完毕后,发送合并文件的数量给到表目录,该表目录根据接到的合并文件的数量判断是否加载完毕,本示例中的标识文件可以体现合并时间信息,比如,为固定前缀“_merged_”+13位数字时间戳,如“_merged_1577598273000”等。
进而,查询分布式文件系统的工作目录,判断是否在工作目录中查询到与至少一个合并文件对应的表示合并文成的标识文件,若查询到标识文件,则表明至少一个合并文件全部合并完毕,从而将工作目录中的标识文件移动至分布式文件系统的表目录,其中,可以逐个移动工作目录中的合并文件到分布式文件系统的表目录。
为了进一步避免文件丢失,在将工作目录中的至少一个合并文件移动至分布式文件系统的表目录时,判断是否所有工作目录中的至少一个合并文件全部移动至分布式文件系统的表目录,即是否全部的合并文件全部移动至表目录,若是,则在工作目录中生成与至少一个合并文件对应的加载完成标记,以表明工作目录中的合并文件全部移动到了表目录中,便于基于加载完成标记进行后续的缓存清理等,其中,加载完成标记可以携带时间信息(该时间信息可以与具体的记载完成时间唯一对应等),比如,命名格式为固定前缀“_reloaded_”+13位数字时间戳,如“_reloaded_1577598273000”等。
进一步的,在根据至少一个合并文件更新分布式文件系统中的表目录后,向客户端发送合并文件更新请求,以便于客户端在接收到合并文件更新请求后根据表目录提供文件读取服务。
其中,为了避免文件的丢失,在本申请的一个实施例中,在若查询到标记文件之后,向客户端发送合并文件更新请求。
并且,在向客户端发送合并文件更新请求之后,该可清除工作目录中的缓存以保证该文件读取方法的良性循环,在本申请的一个实施例中,检测工作目录中是否包含加载完成标记,其中,正如以上所描述的,加载完成标记为合并文件全部移动至表目录后生成的,若包含加载完成标记,则判断加载完成标记的生成时长,其中,该生成时长可以根据加载完成标记中的时间戳对应的时间和当前时间计算得到,若是生成时长大于预设时间阈值时,删除加载完成标记。
在本申请的一个实施例中,在客户端读取到标识文件中的所有合并文件之后,为了降低内存占用率,还可根据预设经验值删除原始文件。
比如,开启计时器计时,判断分布式文件系统中的表目录中,是否包含与历史周期下的历史原始文件对应的历史加载完成标记,若包含,则在计时器的计时结果达到预设时间阈值时,清除工作目录中与历史加载完成标记和对应的历史原始文件,其中,上述预设时间阈值可以理解为经验值,预设时间阈值可以根据大量实验数据标定,通常在预设时间阈值后,与历史原始文件有关联的原始文件的计算任务均已结束,上述预设时间阈值可以是1天等,通常在该预设时间阈值后,对应的数据库执行完毕与原始的文件相关的计算任务。
当然,在实际执行过程中,合并服务器在执行文件合并操作时,可能因为外部系统运行原因,或者是合并服务器的因为运行卡顿等原因导致退出,为了避免文件丢失,在本申请的一个实施例中,可以对合并过程重入,即在本实施例中,查询工作目录中是否存在标记文件和加载完成标记,若是仅仅存在标记文件,则继续将与标记文件对应的合并文件移动至表目录,若是既没有发现标记文件也没有发现加载完成标记,则重新执行对原始文件的合并操作。
为了更全面的说明文件读取的场景,下面示例结合数据库引擎侧描述,其中,数据库引擎可以供客户端作为插件来运行。
在本申请的一个实施例中,图4是根据本申请又一个实施例的文件读取方法的流程图,如图4所示,客户端根据更新后的表目录提供文件读取服务包括以下步骤:
步骤401,在客户端未读取到所述标识文件中的全部合并文件时,获取原始文件。
步骤402,直至在客户端读取到标识文件中的全部合并文件,再次接收客户端读取指令时,直接获取合并文件。
在本实施例中,客户端读取表目录中的标识文件,根据标识文件中的原始文件列表和合并文件的文件列表,确定工作目录中是否包含标识文件中合并文件的文件列表对应的全部合并文件,如没有读取到全部合并文件,则读取原始文件,即客户端通过读取原始文件来进行有关服务。
可以理解,在本实施例中,客户端可以根据预设的读取周期读取表目录中当前是否包含标识文件的全部文件,当然,也可以有系统本身读取表目录中是否包含全部合并文件,若是包含全部合并文件,则系统向客户端发送提醒消息,若是客户端主动读取到全部的合并文件,或者是接收到系统发送的提醒消息,则在接收到客户端发送的读取指令时,直接获取合并文件,将合并文件反馈给客户端等。
在本申请的另一个实施例中,为了保证客户端可以完整的读取文件,避免丢失,客户端检测工作目录中,是否包含与至少一个合并文件对应的加载完成标记,其中,客户端根据预设的读取周期在工作目录中读取加载完整标记,也可以由系统在本地查询是否包含与当前周期下的至少一个合并文件对应的加载完成标记,并在查询到该加载完成标记后,向客户端发送提醒消息,从而,客户端若是没有读取到加载完整标记,或者没有是接收到系统反馈的提醒消息,则客户端无法在表目录中读取到标识文件中所有的合并文件,从而,读取原始文件执行有关数据服务,即系统将本地的原始文件反馈给客户端等。在客户端读取到加载完成标记时,再次接收到客户端的读取指令时,直接获取合并文件来进行有关数据服务,比如,系统直接将合并文件反馈给客户端等。
为了使得本领域的技术人员更加完成的理解本申请实施例的文件读取方法,下面结合具体的应用场景来说明,在下面示例中,分布式文件系统以HDFS表示,标记文件包含原始文件列表和合并文件列表:
如图5所示,由于新的文件是不断被导入的,因此,文件合并服务模块首先根据预设的读取周期读取HDFS在当前周期下存储的原始文件,具体而言,可以读取HDFS中表目录下当前周期内更新的内容来确定原始文件,进而,对原始文件中执行文件合并操作。
在生成合并文件后,保存合并文件至工作目录,并且为了避免文件丢失,在合并文件生成后,生成标记文件,进而,将标记文件和合并文件移动至表目录中。
其次,在应用中,客户端侧读取HDFS的表目录,其中,在读取HDFS的表目录中的标记文件,确定表目录中是否包含合并文件,若包含,则可以确定工作目录中是否存在对应的加载完成标记,若存在则读取表目录中的合并文件。其中,客户端使用数据库语句“EXPLAINSELECT*FROM table_name”重新加载合并文件列表。
最后,文件合并服务模块在一段时间后,清理原始的原始文件和对应的合并文件等,以实现内存的释放。
结合上述交互过程的描述,为了更清晰的体现文件交互过程下面结合具体的示例说明,在该示例中,待合并的原始文件为表目录中的F1、F2和F3时,则如图6-1所示,经过文件合并服务模块合并后,工作目录中的合并文件为M1和M2,合并完成后生成与合并文件对应的标记文件(包含原始文件F1、F2和F3和合并文件M1和M2的对应关系),进而,开始将合并文件移动到表目录,在此时,若是发现工作目录中没有加载完成标记,即表示表目录中没有M1或者M2中的至少一个,从而,还是根据原始的文件F1、F2和F3来提供有关计算任务,当发现工作目录中没有加载完成标记,则表明工作目录中的合并文件全部移动到表目录中,从而,客户端切换为加载合并文件M1和M2,当然,此时为了不打断原有的使用原始文件F1、F2和F3的计算任务的执行,需要在一定时间后,等到计算任务执行完毕后,删除表目录中的原始文件F1、F2和F3,也可以理解,合并的过程并不影响计算任务的读表操作。
在一段时间后,即原有的使用原始文件F1、F2和F3的计算任务的执行完毕后,如图6-2所示,文件合并服务模块可以删除工作目录中的有关加载完成标记等缓存,以及删除表目录中的原始文件。
综上,本申请实施例的文件读取方法,响应于接收到的读取指令,获取当前周期分布式文件系统表目录下的至少两个待读取的原始文件,在至少两个原始文件满足预设合并策略时,合并至少两个原始文件以生成至少一个合并文件,进而,在原始文件全部完成合并时,根据合并文件更新分布式文件系统中的表目录,以便于客户端根据更新后的表目录提供文件读取服务。由此,解决分布式数据库底层文件系统文件碎片化问题的同时,提高了分布式数据库的查询效率,当读取的文件中存在大量原始文件时,实现对原始文件的合并,提高对分布式文件系统的内存利用率,提高了文件读取效率,且在合并文件过程中,不影响数据库的数据读取任务的执行。
为了实现上述实施例,本申请还提出了一种文件读取装置,图7是根据本申请一个实施例的文件读取装置的结构示意图,如图7所示,该文件读取装置包括:获取模块110、合并模块120、第一更新模块130其中,
获取模块110,用于响应于接收到的读取指令,获取当前周期分布式文件系统表目录下待读取的至少两个原始文件;
合并模块120,用于在至少两个原始文件满足预设合并策略时,合并至少两个原始文件以生成至少一个合并文件;
第一更新模块130,用于在原始文件全部完成合并时,根据合并文件更新分布式文件系统中的表目录,以便于客户端根据更新后的表目录提供文件读取服务。
在本申请的一个实施例中,合并模块120,具体用于:
获取原始文件的文件大小,计算当前周期所有原始文件的文件大小的均值;
当均值大于等于预设阈值时,合并至少两个原始文件以生成至少一个合并文件。
在本申请的一个实施例中,如图8所示,在如图7所示的基础上,该文件读取装置还包括:保存模块140、生成模块150,其中,
保存模块140,用于将合并文件保存至工作目录;
生成模块150,用于根据原始文件的文件列表和合并文件的文件列表生成标识文件;
在本实施例中,保存模块150,还用于将标识文件保存至工作目录,以确定原始文件全部完成合并。
在本实施例中,如图9所示,在如图8所示的基础上,该文件读取装置还包括:第二更新模块160,其中,
第二更新模块160,用于将标识文件和合并文件逐步从工作目录移动至表目录,以更新表目录。
在本申请的一个实施例中,第一更新模块130,具体用于:
在客户端未读取到标识文件中的全部合并文件时,获取原始文件;直至客户端读取到标识文件中的全部合并文件,再次接收客户端读取指令时,直接获取合并文件。
在本申请的一个实施例中,第一更新模块130,具体用于:
在客户端未检测工作目录中包含加载完成标记时,获取原始文件,其中,加载完成标记为合并文件全部移动至表目录后生成的;
直至客户端读取到加载完成标记时,再次接收客户端读取指令时,直接获取合并文件。
在本申请的一个实施例中,如图10所示,在如图7所示的基础上,该文件读取装置还包括:检测模块170、判断模块180和第一删除模块190,其中,
检测模块170,用于检测工作目录中是否包含加载完成标记,其中,加载完成标记为合并文件全部移动至表目录后生成的;
判断模块180,用于在包含加载完成标记时,判断加载完成标记的生成时长;
第一删除模块190,用于在生成时长大于预设时间阈值时,删除加载完成标记。
在本申请的一个实施例中,如图11所示,在如图7所示的基础上,该文件读取装置还包括:第二删除模块1100,其中,
第二删除模块1100,用于在客户端读取到标识文件中的所有合并文件之后,根据预设经验值删除原始文件。
需要说明的是,前述对文件读取方法的描述,也适用于本申请实施例的文件读取装置,其实现原理类似,在此不再赘述。
综上,本申请实施例的文件读取装置,响应于接收到的读取指令,获取当前周期分布式文件系统表目录下的至少两个待读取的原始文件,在至少两个原始文件满足预设合并策略时,合并至少两个原始文件以生成至少一个合并文件,进而,在原始文件全部完成合并时,根据合并文件更新分布式文件系统中的表目录,以便于客户端根据更新后的表目录提供文件读取服务。由此,解决分布式数据库底层文件系统文件碎片化问题的同时,提高了分布式数据库的查询效率,当读取的文件中存在大量原始文件时,实现对原始文件的合并,提高对分布式文件系统的内存利用率,提高了文件读取效率,且在合并文件过程中,不影响数据库的数据读取任务的执行。
为了实现上述实施例,本申请还提出了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序,所述处理器执行该程序时,实现如上述实施例所描述的文件读取方法。
为了实现上述实施例,本发明还提出一种非临时性计算机可读存储介质,当所述存储介质中的指令由处理器被执行时,使得能够执行上述实施例所描述的文件读取方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (11)

1.一种文件读取方法,其特征在于,包括以下步骤:
响应于接收到的读取指令,获取当前周期分布式文件系统表目录下待读取的至少两个原始文件;
在所述至少两个原始文件满足预设合并策略时,合并所述至少两个原始文件以生成至少一个合并文件;
在所述原始文件全部完成合并时,根据所述合并文件更新所述分布式文件系统中的表目录,以便于客户端根据更新后的表目录提供文件读取服务。
2.如权利要求1所述的方法,其特征在于,所述在所述至少两个原始文件满足预设合并策略时,合并所述至少两个原始文件以生成至少一个合并文件,包括:
获取所述原始文件的文件大小,计算当前周期所有所述原始文件的文件大小的均值;
当所述均值大于等于预设阈值时,合并所述至少两个原始文件以生成至少一个合并文件。
3.如权利要求1所述的方法,其特征在于,在合并所述至少两个原始文件以生成至少一个合并文件之后,所述方法还包括:
将所述合并文件保存至工作目录;
根据所述至少两个原始文件的文件列表和所述至少一个合并文件的文件列表生成标识文件,并将所述标识文件保存至所述工作目录,以确定所述原始文件全部完成合并。
4.如权利要求3所述的方法,其特征在于,还包括:
将所述标识文件和所述合并文件逐步从所述工作目录移动至所述表目录,以更新所述表目录。
5.如权利要求4所述的方法,其特征在于,所述客户端根据更新后的表目录提供文件读取服务,包括:
在客户端未读取到所述标识文件中的全部所述合并文件时,获取所述原始文件;直至客户端读取到所述标识文件中的全部所述合并文件,再次接收客户端读取指令时,直接获取所述合并文件。
6.如权利要求4所述的方法,其特征在于,所述客户端根据更新后的表目录提供文件读取服务,包括:
在客户端未检测所述工作目录中包含加载完成标记时,获取所述原始文件,其中,所述加载完成标记为所述合并文件全部移动至所述表目录后生成的;
直至客户端读取到所述加载完成标记时,再次接收客户端读取指令时,直接获取所述合并文件。
7.如权利要求6所述的方法,其特征在于,还包括:
若检测到所述工作目录中包含所述加载完成标记,则统计所述加载完成标记的生成时长;
在所述生成时长大于预设时间阈值时,删除所述加载完成标记。
8.如权利要求5所述的方法,其特征在于,在客户端读取到所述标识文件中的所有合并文件之后,所述方法还包括:
根据预设经验值删除所述原始文件。
9.一种文件读取装置,其特征在于,包括:
获取模块,用于响应于接收到的读取指令,获取当前周期分布式文件系统表目录下待读取的至少两个原始文件;
合并模块,用于在所述至少两个原始文件满足预设合并策略时,合并所述至少两个原始文件以生成至少一个合并文件;
第一更新模块,用于在所述原始文件全部完成合并时,根据所述合并文件更新所述分布式文件系统中的表目录,以便于客户端根据更新后的表目录提供文件读取服务。
10.一种电子设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序,所述处理器执行所述程序时,实现如权利要求1-8中任一所述的文件读取方法。
11.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-8中任一所述的文件读取方法。
CN202010961161.2A 2020-09-14 2020-09-14 文件读取方法、装置、电子设备和存储介质 Pending CN112231293A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010961161.2A CN112231293A (zh) 2020-09-14 2020-09-14 文件读取方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010961161.2A CN112231293A (zh) 2020-09-14 2020-09-14 文件读取方法、装置、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN112231293A true CN112231293A (zh) 2021-01-15

Family

ID=74116534

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010961161.2A Pending CN112231293A (zh) 2020-09-14 2020-09-14 文件读取方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN112231293A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112965939A (zh) * 2021-02-07 2021-06-15 中国工商银行股份有限公司 一种文件合并方法、装置和设备
CN113448938A (zh) * 2021-07-20 2021-09-28 恒安嘉新(北京)科技股份公司 数据处理方法、装置、电子设备及存储介质

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103279474A (zh) * 2013-04-10 2013-09-04 深圳康佳通信科技有限公司 一种视频文件索引方法及系统
CN104133882A (zh) * 2014-07-28 2014-11-05 四川大学 一种基于hdfs的小文件处理方法
CN105653592A (zh) * 2016-01-28 2016-06-08 浪潮软件集团有限公司 一种基于hdfs的小文件合并工具和方法
US9639544B1 (en) * 2013-10-28 2017-05-02 Pivotal Software, Inc. Table data persistence
CN106843763A (zh) * 2017-01-19 2017-06-13 北京神州绿盟信息安全科技股份有限公司 一种基于hdfs系统的文件合并方法及装置
WO2017133216A1 (zh) * 2016-02-06 2017-08-10 华为技术有限公司 分布式存储方法和设备
CN107861686A (zh) * 2017-09-26 2018-03-30 深圳前海微众银行股份有限公司 文件存储方法、服务端和计算机可读存储介质
CN108256115A (zh) * 2017-09-05 2018-07-06 国家计算机网络与信息安全管理中心 一种面向SparkSql的HDFS小文件实时合并实现方法
CN109388624A (zh) * 2018-10-09 2019-02-26 郑州云海信息技术有限公司 分布式文件删除方法、装置、系统及计算机可读存储介质
CN109902067A (zh) * 2019-02-15 2019-06-18 杭州数梦工场科技有限公司 文件处理方法、装置、存储介质及计算机设备
CN109947712A (zh) * 2019-03-08 2019-06-28 北京京东尚科信息技术有限公司 计算框架内自动合并文件的方法、系统、设备及介质
CN110321329A (zh) * 2019-06-18 2019-10-11 中盈优创资讯科技有限公司 基于大数据的数据处理方法及装置
CN110647497A (zh) * 2019-07-19 2020-01-03 广东工业大学 一种基于hdfs的高性能文件存储与管理系统
CN110704400A (zh) * 2019-09-29 2020-01-17 上海易点时空网络有限公司 实时数据同步方法以及装置、服务器
CN110990334A (zh) * 2019-11-19 2020-04-10 上海易点时空网络有限公司 用于hdfs的文件处理方法以及系统、设备、存储介质
CN111159130A (zh) * 2018-11-07 2020-05-15 中移(苏州)软件技术有限公司 一种小文件合并方法及电子设备

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103279474A (zh) * 2013-04-10 2013-09-04 深圳康佳通信科技有限公司 一种视频文件索引方法及系统
US9639544B1 (en) * 2013-10-28 2017-05-02 Pivotal Software, Inc. Table data persistence
CN104133882A (zh) * 2014-07-28 2014-11-05 四川大学 一种基于hdfs的小文件处理方法
CN105653592A (zh) * 2016-01-28 2016-06-08 浪潮软件集团有限公司 一种基于hdfs的小文件合并工具和方法
WO2017133216A1 (zh) * 2016-02-06 2017-08-10 华为技术有限公司 分布式存储方法和设备
CN106843763A (zh) * 2017-01-19 2017-06-13 北京神州绿盟信息安全科技股份有限公司 一种基于hdfs系统的文件合并方法及装置
CN108256115A (zh) * 2017-09-05 2018-07-06 国家计算机网络与信息安全管理中心 一种面向SparkSql的HDFS小文件实时合并实现方法
CN107861686A (zh) * 2017-09-26 2018-03-30 深圳前海微众银行股份有限公司 文件存储方法、服务端和计算机可读存储介质
CN109388624A (zh) * 2018-10-09 2019-02-26 郑州云海信息技术有限公司 分布式文件删除方法、装置、系统及计算机可读存储介质
CN111159130A (zh) * 2018-11-07 2020-05-15 中移(苏州)软件技术有限公司 一种小文件合并方法及电子设备
CN109902067A (zh) * 2019-02-15 2019-06-18 杭州数梦工场科技有限公司 文件处理方法、装置、存储介质及计算机设备
CN109947712A (zh) * 2019-03-08 2019-06-28 北京京东尚科信息技术有限公司 计算框架内自动合并文件的方法、系统、设备及介质
CN110321329A (zh) * 2019-06-18 2019-10-11 中盈优创资讯科技有限公司 基于大数据的数据处理方法及装置
CN110647497A (zh) * 2019-07-19 2020-01-03 广东工业大学 一种基于hdfs的高性能文件存储与管理系统
CN110704400A (zh) * 2019-09-29 2020-01-17 上海易点时空网络有限公司 实时数据同步方法以及装置、服务器
CN110990334A (zh) * 2019-11-19 2020-04-10 上海易点时空网络有限公司 用于hdfs的文件处理方法以及系统、设备、存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一二三冲鸭: "一起学Hive——创建内部表、外部表、分区表和分桶表及导入数据", Retrieved from the Internet <URL:https://zhuanlan.zhihu.com/p/46101545> *
桃子红了呐: "Hive数据导入——数据存储在Hadoop分布式文件系统中,往Hive表里面导入数据只是简单的将数据移动到表所在的目录中!", Retrieved from the Internet <URL:https://developer.aliyun.com/article/399830> *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112965939A (zh) * 2021-02-07 2021-06-15 中国工商银行股份有限公司 一种文件合并方法、装置和设备
CN113448938A (zh) * 2021-07-20 2021-09-28 恒安嘉新(北京)科技股份公司 数据处理方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN107133234B (zh) 缓存数据更新的方法、装置及系统
CN112231293A (zh) 文件读取方法、装置、电子设备和存储介质
CN110019239B (zh) 上报数据的存储方法、装置、电子设备和存储介质
CN107959695B (zh) 一种数据传输方法及装置
CN107247722B (zh) 一种文件扫描方法、装置及智能终端
CN110531933B (zh) 数据处理方法及服务器
CN106960054B (zh) 数据文件的存取方法及装置
CN110134738A (zh) 分布式存储系统资源预估方法、装置
CN108763046B (zh) 线程运行监控方法、装置、计算机设备和存储介质
CN111625515A (zh) 一种聚合小文件的操作请求的处理方法及装置
CN103778219A (zh) 一种基于HBase的更新增量索引的方法
CN108446169B (zh) 一种作业调度方法及装置
CN115837855B (zh) 充电桩输出功率控制方法、装置、充电桩和存储介质
CN111767314A (zh) 数据缓存及查询方法、装置、懒缓存系统及存储介质
CN114519055A (zh) 数据存储方法及设备
CN115129733A (zh) 一种银行数据变更历史的记录和查询方法、装置及设备
CN113672584A (zh) 分布式文件系统的hdfs协议数据映射传输方法和装置
CN113821166A (zh) 一种聚合多版本小对象的方法、装置及设备
CN112162949A (zh) 一种文件管理方法、系统、电子设备及存储介质
CN113312412A (zh) 一种统计数据的获取方法、装置、电子设备及存储介质
CN112732192A (zh) 一种磁盘分布信息裁剪方法、系统、设备以及介质
CN110750217A (zh) 一种信息管理方法及相关装置
CN108206933B (zh) 一种基于视频云存储系统的视频数据获取方法及装置
CN112131433B (zh) 区间计数查询方法及装置
CN109902067A (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