CN107169098B - 数据搬运方法、数据搬运装置及电子设备 - Google Patents

数据搬运方法、数据搬运装置及电子设备 Download PDF

Info

Publication number
CN107169098B
CN107169098B CN201710340072.4A CN201710340072A CN107169098B CN 107169098 B CN107169098 B CN 107169098B CN 201710340072 A CN201710340072 A CN 201710340072A CN 107169098 B CN107169098 B CN 107169098B
Authority
CN
China
Prior art keywords
data
width
source
data source
reading
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
CN201710340072.4A
Other languages
English (en)
Other versions
CN107169098A (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.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information 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 Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201710340072.4A priority Critical patent/CN107169098B/zh
Publication of CN107169098A publication Critical patent/CN107169098A/zh
Application granted granted Critical
Publication of CN107169098B publication Critical patent/CN107169098B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

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)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开提供了一种数据搬运方法、数据搬运装置及电子设备,该方法包括:读取数据源中的数据并将数据源中行键相同的N条数据压缩拼装为一条等宽数据;将从所述数据源读取的所述等宽数据存储在一中间队列;将存储在所述中间队列的所述等宽数据写入和分发到一目标存储器。本公开通过使用等宽数据,提高了数据搬运效率。

Description

数据搬运方法、数据搬运装置及电子设备
技术领域
本公开涉及数据处理技术领域,具体而言,涉及一种数据搬运方法、一种数据搬运装置以及一种电子设备。
背景技术
随着通信技术的发展,大数据的存储、抽取、搬运、计算、分析以及决策越来越受到关注。随着对大数据处理分析的迫切需求,以及数据存储空间与数据访问时间之间的矛盾激化,大多数用户通过分布式存储系统HBase来对数据进行存储,以满足对数据高效的插入和读取操作。
现有技术中,一般采用开源数据仓库框架Hadoop+Hive进行底层数据分析及数据存储,其中分布式系统基础架构Hadoop为底层数据的存储介质,基于Hadoop数据仓库工具Hive为类SQL(Structured Query Language,结构化查询语言)查询引擎,两者的结合使得数据的查询方式更加简便。
这种方式会存在以下问题:一、在海量数据的情况下,映射和化简Map-Reduce的查询形式已经无法满足对大数据进行即席查询的效率;二、行键Rowkey是多字段拼装的字符串类型,因此除冗余字段之外的行键中的其他字段都不能参与计算;同时由于行键中每个字段长短的设计都依赖于HBase底层存储的字典序来进行后续的查询,因此对于较多的字段所拼装的行键,空数据量大,对传输过程中的输入/输出产生较大的影响,从而影响数据的搬运效率。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种数据搬运方法、一种数据搬运装置以及一种电子设备,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的一个或者多个问题。
根据本公开的第一方面,提供一种数据搬运方法,所述方法包括:
读取数据源中的数据并将所述数据源中行键相同的多条数据压缩拼装为一条等宽数据;
将从所述数据源读取的所述等宽数据存储在一中间队列;
将存储在所述中间队列的所述等宽数据写入和分发到一目标存储器。
在本公开的一种示例性实施例中,将数据源中行键相同的多条数据压缩拼装为一条等宽数据包括:
在对数据进行压缩拼装时,自定义配置所述数据源中行键对应的每个字段和每个列的类型。
在本公开的一种示例性实施例中,读取数据源中的数据包括:
循环读取所述数据源中的数据到所述数据源的缓冲区,并对读取的数据进行映射操作以及自定义预处理;
在对读取的数据进行映射操作以及自定义预处理之后,判断所述数据源是否已满;
在判断所述数据源已满时,将数据推送到所述中间队列并循环读取所述数据源中的数据。
在本公开的一种示例性实施例中,将所述等宽数据写入和分发到一目标存储器包括:
将所述数据源中行键相同的数据按照一致性哈希算法分发到相同的线程,并通过多线程的形式将数据写入所述目标存储器;
在将数据写入所述目标存储器时,判断所述目标存储器中是否存在空数据;
在判断所述目标存储器中未存在所述空数据时,判断写入数据的行键是否相同;
在判断写入数据的行键相同时,将行键相同的数据进行拼装并将数据推送到所述目标存储器中。
在本公开的一种示例性实施例中,所述方法还包括:
通过所述中间队列控制所述等宽数据的读取速度大于写入速度。
在本公开的一种示例性实施例中,将存储在所述中间队列的所述等宽数据写入和分发到一目标存储器之后,所述方法还包括:
按照预设数据配置通过单条命中操作在所述目标存储器中查询所述等宽数据;
将查询的所述等宽数据解析为多条数据,并对解析的所述多条数据进行处理。
在本公开的一种示例性实施例中,在读取数据源中的数据之前,所述方法还包括:
指定所述数据源和所述目标存储器的之间的映射关系以及所述数据源和所述目标存储器中数据的类型。
根据本公开的第二方面,提供一种数据搬运装置,所述装置包括:
数据读取模块,用于读取数据源中的数据并将所述数据源中行键相同的多条数据压缩拼装为一条等宽数据;
数据存储模块,用于将从所述数据源读取的所述等宽数据存储在一中间队列;
数据写入模块,用于将存储在所述中间队列的所述等宽数据写入和分发到一目标存储器。
在本公开的一种示例性实施例中,将数据源中行键相同的多条数据压缩拼装为一条等宽数据包括:
数据配置模块,用于在对数据进行压缩拼装时,自定义配置所述数据源中行键对应的每个字段和每个列的类型。
在本公开的一种示例性实施例中,读取数据源中的数据包括:
数据处理模块,用于循环读取所述数据源中的数据到所述数据源的缓冲区,并对读取的数据进行映射操作以及自定义预处理;
已满判断模块,用于在对读取的数据进行映射操作以及自定义预处理之后,判断所述数据源是否已满;
数据推送模块,用于在判断所述数据源已满时,将数据推送到所述中间队列并循环读取所述数据源中的数据。
在本公开的一种示例性实施例中,将所述等宽数据写入和分发到一目标存储器中包括:
数据分发模块,用于将所述数据源中行键相同的数据按照一致性哈希算法分发到相同的线程,并通过多线程的形式将数据写入所述目标存储器;
空数据判断模块,用于在将数据写入所述目标存储器时,判断所述目标存储器中是否存在空数据;
行键判断模块,用于在判断所述目标存储器中未存在所述空数据时,判断写入数据的行键是否相同;
数据拼装模块,用于在判断写入数据的行键相同时,将行键相同的数据进行拼装并将数据推送到所述目标存储器中。
在本公开的一种示例性实施例中,所述装置还包括:
速度控制模块,用于通过所述中间队列控制所述等宽数据的读取速度大于写入速度。
在本公开的一种示例性实施例中,将存储在所述中间队列的所述等宽数据写入和分发到一目标存储器之后,所述装置还包括:
数据查询模块,用于按照预设数据配置通过单条命中操作在所述目标存储器中查询所述等宽数据;
数据解析模块,用于将查询的所述等宽数据解析为多条数据,并对解析的多条数据进行处理。
在本公开的一种示例性实施例中,在读取数据源中的数据之前,所述装置还包括:
数据指定模块,用于指定所述数据源和所述目标存储器的之间的映射关系以及所述数据源和所述目标存储器中数据的类型。
根据本公开的第三方面,提供一种电子设备,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的数据搬运方法。
本公开提供的一种数据搬运方法、数据搬运装置以及电子设备中,通过读取数据源中的数据并将数据源中行键相同的多条数据压缩拼装为一条等宽数据;将从所述数据源读取的所述等宽数据存储在一中间队列;将存储在所述中间队列的所述等宽数据写入和分发到一目标存储器中。一方面,通过将多条数据压缩合并成一条等宽数据,大量减少了数据量的传递,简化了数据搬运的操作方式及操作量,提高了数据的搬运效率;另一方面,在数据搬运过程中,通过将多条数据压缩合并成一条等宽数据,保障了数据的完整性以及在搬运前和搬运后数据的一致性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性示出一种数据搬运方法的流程示意图。
图2示意性示出本公开一种等宽数据模型示意图。
图3示意性示出本公开一种等宽数据拼装示意图。
图4示意性示出本公开一种数据搬运流程示意图。
图5示意性示出一种数据搬运装置的方框图。
图6示意性示出本公开示例性实施例中的电子设备的模块图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本公开将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有所述特定细节中的一个或更多,或者可以采用其他的方法、组元、材料、装置、步骤等。在其他情况下,不详细示出或描述公知结构、方法、装置、实现、材料或者操作以避免模糊本公开的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个软件硬化的模块中实现这些功能实体或功能实体的一部分,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
本示例实施方式中首先提供了一种数据搬运方法,可以应用于无线终端SoC芯片中的数据搬运、各大电商平台、各大网站对海量数据的分析。参考图1所示,所述数据搬运方法可以包括以下步骤:
步骤S110:读取数据源中的数据并将所述数据源中行键相同的多条数据压缩拼装为一条等宽数据;
步骤S120:将从所述数据源读取的所述等宽数据存储在一中间队列;
步骤S130:将存储在所述中间队列的所述等宽数据写入和分发到一目标存储器。
本公开提供的一种数据搬运方法中,通过读取数据源中的数据并将数据源中行键相同的多条数据压缩拼装为一条等宽数据;将从所述数据源读取的所述等宽数据存储在一中间队列;将存储在所述中间队列的所述等宽数据写入和分发到一目标存储器。一方面,通过将多条数据压缩拼装成一条等宽数据,大量减少了数据量的传递,提高了数据的搬运效率;另一方面,数据在传输过程中,保障数据不丢失以及数据信息在搬运前和搬运后的一致性。
下面,将参考图2至图4所示对本示例实施例中的数据搬运方法作进一步说明。
在步骤S110中,读取数据源中的数据并将所述数据源中行键相同的多条数据压缩拼装为一条等宽数据。
本示例实施方式中,数据源可以为提供所需要的数据的器件,也可以为原始媒体或者其他形式的数据源。可以在数据源中存储所有建立数据库连接的信息,通过提供正确的数据源名称,就可以找到相应的数据库连接。例如,数据源中的数据可以是任意形式、任意大小的数据,例如图形数据、遥感数据、统计调查数据等。数据可以通过表格的形式显示,也可以通过其他方式显示。例如,在用表格显示数据时,可以用概念模型表示,其中:表格可以是行的集合,每行可以包含一个行关键字、一个可选的时间戳以及一些有数据的列。在概念模型上,表格是一个比较稀疏的行、列矩阵,但是在物理模型上,所有数据都是按照列存储的。本示例实施方式中,多条数据可以用N条数据来具体表示,可以对数据源中行键相同的N条数据进行压缩并拼装成一条数据,其中,数据的行键即每行数据的行关键字,N可以为任意自然数,行键可以是任意的字节数组。数据压缩可以按照预设的算法对数据重新进行编码组织,以此减少数据的冗余和存储的空间,从而提高数据存储、传输以及数据处理的效率。数据压缩可以分为即时压缩和非即时压缩、数据压缩和文件压缩、无损压缩和有损压缩等。
图2所示为等宽N数据的模型示意图,一条等宽数据可以由一个行关键字以及多个列组成,其中,行键对应的每个行都是由不同数据类型的定长字节组成,数据类型是通过数据配置指定,列则可以由一个宽度标识以及N个数值组成,N即代表宽度标识。N为数据列的个数即数据的列数N,M为数据的条数即数据的行数M,其中,N、M都可以是任意不为0的自然数,N可以大于、等于或者小于M。
参考图3所示,如果N条数据Data1与DataN中的行键值完全相同,则认定该数据满足等宽拼装的条件,Data1与DataN会合并成一条等宽N数据HBase DataN,其中每一列都是与数据Data对应的列字段。
此外,本示例实施方式中,在读取数据源中的数据之前,所述方法还包括:
指定所述数据源的映射的表、字段以及所述目标存储器的映射的表、行键、字段对数据源中字段的映射。
本示例实施方式中,可以根据数据源和目标存储器两个数据模型,在这两个模型之间建立起数据元素的对应关系从而形成数据映射。可以通过手工编码或者可视化操作的方式形成数据映射。在读取数据源的数据之前,可以首先进行对数据进行自定义配置。数据配置可以分为数据映射的配置和数据类型的配置。其中,数据映射的配置主要可以服务于数据读取,该项配置可以实现如下几项功能,例如:指定数据源的映射的表、字段;对字段进行自定义预处理,即对读取的字段进行例如替换Replace、转变Convert等自定义数据处理;指定目标存储器中的表以及目标行和目标字段对数据源中的字段的映射。而数据类型的配置主要可以应用于数据读取、数据拼装以及数据查询,该项配置可以实现如下几项功能,例如:指定数据源及目标存储器的行关键字以及各个字段的数据类型;为数据查询提供数据类型配置,从而为数据的拆分、查询、过滤以及计算等操作建立基础。数据配置可以只实现其中一种定义功能,也可以同时实现其中多个或者是全部定义功能。
此外,本示例实施方式中,将数据源中行键相同的多条数据压缩拼装为一条等宽数据包括:
在对数据进行压缩拼装时,自定义配置所述数据源中行键对应的每个字段和每个列的类型。
本示例实施方式中,数据表中的一列为一个字段,表中每列的名称为字段名,字段类型也是数据类型。本示例实施方式中,可以根据实际需要自定义每个字段的类型,例如,int、char、varchar、bit等,列的类型可以是数值、字符串、日期/时间、枚举等类别,本示例实施方式中对此不作特殊限定。
此外,本示例实施方式中,读取数据源中的数据包括:
循环读取所述数据源中的数据到所述数据源的缓冲区,并对读取的数据进行映射操作以及自定义预处理;
在对读取的数据进行映射操作以及自定义预处理之后,判断所述数据源是否已满;
在判断所述数据源已满时,将数据推送到所述中间队列并循环读取所述数据源中的数据。
本示例实施方式中,循环读取的数据可以为所述数据源中的底层数据,可以基于底层数据分析数据的存储以及计算等问题,进而进行数据的挖掘。所述缓冲区可以是前端用来存储、处理数据的对象。例如,在每一个数据窗口对象中,可以有4个二维表作为数据缓冲区,用来存储查询到的数据。缓冲区可以为完全缓冲,在缓冲区满时会被清空缓冲区的内容会被发往目标存储中;也可以为行缓冲,遇到一个换行符时,缓冲区的内容就被清空,例如,键盘输入。本示例实施方式中,可以利用函数对数据源中的数据进行循环读取,并将读取的底层数据存储到数据源的缓冲区。通过将数据存入缓冲区,减少了数据传输的时间,提高了数据读取的效率;在发现输入有错时,可以通过键盘或者是其它方式进行修改,提高了数据传输的准确率。可以对循环读取的数据进行Map操作以及自定义预处理。例如,可以对读取的数据进行添加、删除、过滤、获取、判断等映射操作或其他自定义预处理操作。
数据源中可以存在数据队列,该数据队列可以用于将数据按照顺序进行处理,可以按照先进先出的规则用一组地址连续的存储单元依次存放队列中的各数据。可以通过函数对队列进行例如初始化队列InitQueue、进队列EnQueue、出队列DeQueue等操作。队列可以为顺序队列,也可以为循环队列。可以通过函数IsQueueFull判断队列是否已满,并在判断队列已满时,控制数据进入中间队列。在此过程中,可以通过函数循环读取数据源中的数据。
在步骤S120中,将从所述数据源读取的所述等宽数据存储在一中间队列。
本示例实施方式中,可以通过get函数批量获取数据,例如同时获取一行数据,也可以通过get命令和其他函数的组合获取指定的一列数据或者是指定的一个列族中所有列的数据,也可以通过多线程方式读取数据,或者也可以通过其他方式读取。在读取所述等宽数据且对数据进行自定义预处理之后,将数据存储在中间队列中,实现数据读写的异步操作。中间队列可以按照先进先出的原则实现数据的读取和写入。即一个线程将数据源中的数据推送到中间队列,另一个线程从中间队列中取出数据进行处理。通过中间队列保证数据的读取接口和写入接口之间不存在并发冲突,两个线程不需要进行任何同步动作,从而提高数据的搬运效率。
此外,本示例实施方式中,所述方法还包括:
通过所述中间队列控制所述等宽数据的读取速度大于写入速度。
本示例实施方式中,系统在运行时,读写操作的速度可以是根据不同运行状态定义。为了避免发生因内存不足而导致的数据溢出等宕机错误,要保证数据的读取速度远大于数据的写入速度。本示例性实施例中,可以通过所述中间队列控制数据的读取速度远大于数据的写入速度。中间队列可以与数据源中的数据队列的性质保持一致。中间队列可以提供路由并保证消息或者数据的有效传递,例如,在发送者发送完消息后如果接收者为不能使用状态,中间队列则会保留消息,直到该条数据成功传递。通过中间队列还保证了数据传输的有效性和正确性。读取速度是指将存储设备中的数据提取出来的操作速度,可以理解为复制数据源中数据的速度;写入速度是指将外部数据记录到存储设备中操作速度,可以理解为将数据粘贴到目标存储器中的速度,例如,文件下载、数据粘贴等。
在步骤S130中,将存储在所述中间队列的所述等宽数据写入和分发到一目标存储器。
本示例实施方式中,可以在接收到写入命令时,响应所述写入命令并将从数据源中读取的,存储在中间队列的数据按照预设要求写入目标存储器中。可以直接使用HTable进行导入、或者从HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)文件中导入HBase、或者读取HBase表写入HBase表中字段、或者可以通过其他方式写入。目标存储器可以为反映静态数据的计算机内部或外部的存储介质,例如磁盘、磁带等。目标存储器的存储方式可以为直接附加存储方式、服务器连接存储方式或者基于光纤通道的存储方式。本示例性实施例中,通过等宽数据形式进行数据传递、搬运,大量减少了数据量的传递,提高了数据搬运的效率。
此外,本示例实施方式中,将所述等宽数据写入和分发到一目标存储器包括:
将所述数据源中行键相同的数据按照一致性哈希算法分发到相同的线程,并通过多线程的形式将数据写入所述目标存储器;
在将数据写入所述目标存储器时,判断所述目标存储器中是否存在空数据;
在判断所述目标存储器中未存在所述空数据时,判断写入数据的行键是否相同;
在判断写入数据的行键相同时,将行键相同的数据进行拼装并将数据推送到所述目标存储器中。
本示例实施方式中,可以将数据源中行键相同的多条数据采用一致性哈希算法分发到相同的线程,以保证原本已分配的内容可以被映射到新的缓冲中。也就是说,可以根据一致性哈希算法,要求每个节点存储其上行节点和下行节点的位置信息,在节点需要查找内容时,可以根据内容的键值决定向上行还是下行节点发起查询请求。如果自身拥有被请求的目标,可以直接向发起查询请求的节点返回确认,如果不属于自身的范围,可以转发请求到自己的上行/下行节点。本实例中将数据源的数据进行分发可以为将数据源中的数据存储在中间队列中,再从中间队列中分发出去用于保存或者是其他操作,实现数据的分发与共享,保障共享的数据与数据源中主数据的一致性。所述线程可以由线程ID,当前指令指针,寄存器集合以及堆栈组成。线程可与同属一个进程的其他线程共享进程的所有资源,一个线程可以创建和撤销另一个线程,同一个进程之间的多个线程可以并发执行,即多线程。每一个程序都至少有一个线程,且线程可以有就绪、阻塞和运行三种状态。线程可以应用于文件管理或者通信控制、前后台处理以及异步处理中。多线程是指多个线程并发执行,通过多线程的形式执行数据写入,可以提升数据处理性能。
本示例实施方式中,目标存储器中也可以存在数据队列,该数据队列可以与上述数据源的数据队列的性质保持一致。即可以通过数据队列判断目标存储器中是否存在空数据。在执行数据写入时,可以通过Java语言对Hbase数据库进行操作。数据写入过程中,可以通过if/else循环手动判断、或者通过其他方式判断写入目标存储器的数据队列中的数据是否为空数据,或者说判断目标存储器的数据队列中是否存在空数据。在判断写入的数据为空数据时,可以直接不处理该数据;在判断写入的数据为非空数据时,可以对写入的数据进一步处理。可以允许目标存储器中中连续一行或一列为空数据。
在判断目标存储器的数据队列中不存在空数据时,可以通过循环函数获取每一个写入的数据的行键,通过对比判断所有写入的数据的行键是否相同,并且将判断的行键相同的多条数据按照上述的数据拼装规则拼装成一条等宽数据,最后将拼装的等宽数据推送到目标存储器中进行存储完成整个数据的写入过程。在此过程中,可以通过数据读取和中间队列的运行状态确定是否终止数据写入过程。
此外,本示例实施方式中,将存储在所述中间队列的所述等宽数据写入和分发到一目标存储器之后,所述方法还包括:
按照预设数据配置通过单条命中操作在所述目标存储器中查询所述等宽数据;
将查询的所述等宽数据解析为多条数据,并对解析的所述多条数据进行处理。
本示例实施方式中,在完成数据写入之后,还可以对存储在目标存储器中的数据进行查询。HBase可以根据行键进行检索,具体地,系统可以通过找到某个行键或者是某个行键范围所在的区域,将查询数据的请求提交到该区域获取数据。可以根据行键查询Hbase中从某个时刻起的最新数据,也可以查询指定的一列或者一行数据,或者一次查询所有的数据。在数据查询过程中,可以对单个行键进行get操作,查询唯一的一条记录;也可以通过某个行键所在的范围进行扫描,可以设置起始行键startRowkey和结束行键endRowkey,并在对应范围内进行扫描,从而按照指定条件得到一行、一列或者一批数据;还可以通过全表扫描方式得到整张表中所有的数据。在查询过程中,查询某一条等宽数据就相当于查询行键相同的N条数据。通过单条命中的形式进行数据查询,提升了数据索引的效率。
在查询到等宽数据之后,可以根据数据配置对查询的等宽数据进行解析,数据解析可以认为是数据拼装的逆过程,即将一条等宽N数据拆分成N条行键相同的数据。在将数据拆分之后,还可以对解析的数据进行相应的自定义处理,例如过滤,计算,聚合或者其他操作等。
本示例实施方式中还提供了一种数据搬运装置,所述装置200可以包括:
数据读取模块201,可以用于读取数据源中的数据并将所述数据源中行键相同的多条数据压缩拼装为一条等宽数据;
数据存储模块202,可以用于将从所述数据源读取的所述等宽数据存储在一中间队列;
数据写入模块203,可以用于将存储在所述中间队列的所述等宽数据写入和分发到目标存储器中。
此外,本示例实施方式中,将数据源中行键相同的多条数据压缩拼装为一条等宽数据包括:
数据配置模块,可以用于在对数据进行压缩拼装时,自定义配置所述数据源中行键对应的每个字段和每个列的类型。
此外,本示例实施方式中,读取数据源中的数据包括:
数据处理模块,可以用于循环读取所述数据源中的数据到所述数据源的缓冲区,并对读取的数据进行映射操作以及自定义预处理;
已满判断模块,可以用于在对读取的数据进行映射操作以及自定义预处理之后,判断所述数据源是否已满;
数据推送模块,可以用于在判断所述数据源已满时,将数据推送到所述中间队列并循环读取所述数据源中的数据。
此外,本示例实施方式中,将所述等宽数据写入和分发到一目标存储器包括:
数据分发模块,可以用于将所述数据源中行键相同的数据按照一致性哈希算法分发到相同的线程,并通过多线程的形式将数据写入所述目标存储器;
空数据判断模块,可以用于在将数据写入所述目标存储器时,判断所述目标存储器中是否存在空数据;
行键判断模块,可以用于在判断所述目标存储器中未存在所述空数据时,判断写入数据的行键是否相同;
数据拼装模块,可以用于在判断写入数据的行键相同时,将行键相同的数据进行拼装并将数据推送到所述目标存储器中。
此外,本示例实施方式中,所述装置还可以包括:
速度控制模块,可以用于通过所述中间队列控制所述等宽数据的读取速度大于写入速度。
此外,本示例实施方式中,将存储在所述中间队列的所述等宽数据写入和分发到一目标存储器之后,所述装置还可以包括:
数据查询模块,可以用于按照预设数据配置通过单条命中操作在所述目标存储器中查询所述等宽数据;
数据解析模块,可以用于将查询的所述等宽数据解析为多条数据,并对解析的多条数据进行处理。
此外,本示例实施方式中,在读取数据源中的数据之前,所述装置还可以包括:
数据指定模块,可以用于指定所述数据源和所述目标存储器的之间的映射关系以及所述数据源和所述目标存储器中数据的类型。
上述数据搬运装置中各模块的具体细节已经在对应的数据搬运方法中进行了详细描述,因此此处不再赘述。
本示例实施方式中还提供了一种电子设备,参考图6所示,该电子设备10包括:处理组件11,其进一步可以包括一个或多个处理器,以及由存储器12所代表的存储器资源,用于存储可由处理组件11执行的指令,例如应用程序。存储器12中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件11被配置为执行指令,以执行上述方法。
该电子设备10还可以包括:一个电源组件,电源组件被配置成对执行电子设备10进行电源管理;一个有线或无线网络接口13,被配置成将电子设备10连接到网络;以及一个输入输出(I/O)接口14。该电子设备10可以操作基于存储在存储器12的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个软件硬化的模块中实现这些功能实体或功能实体的一部分,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。

Claims (15)

1.一种数据搬运方法,其特征在于,所述方法包括:
进行包括数据映射配置和数据类型配置的数据配置,基于所述数据配置读取数据源中的数据并将所述数据源中行键相同的多条数据压缩拼装为一条等宽数据;
将从所述数据源读取的所述等宽数据存储在一中间队列;所述中间队列按照先进先出的原则实现数据的读取和写入;
将存储在所述中间队列的所述等宽数据写入和分发到一目标存储器。
2.根据权利要求1所述的数据搬运方法,其特征在于,将数据源中行键相同的多条数据压缩拼装为一条等宽数据包括:
在对数据进行压缩拼装时,自定义配置所述数据源中行键对应的每个字段和每个列的类型。
3.根据权利要求1所述的数据搬运方法,其特征在于,读取数据源中的数据包括:
循环读取所述数据源中的数据到所述数据源的缓冲区,并对读取的数据进行映射操作以及自定义预处理;
在对读取的数据进行映射操作以及自定义预处理之后,判断所述数据源是否已满;
在判断所述数据源已满时,将数据推送到所述中间队列并循环读取所述数据源中的数据。
4.根据权利要求1所述的数据搬运方法,其特征在于,将所述等宽数据写入和分发到一目标存储器包括:
将所述数据源中行键相同的数据按照一致性哈希算法分发到相同的线程,并通过多线程的形式将数据写入所述目标存储器;
在将数据写入所述目标存储器时,判断所述目标存储器中是否存在空数据;
在判断所述目标存储器中未存在所述空数据时,判断写入数据的行键是否相同;
在判断写入数据的行键相同时,将行键相同的数据进行拼装并将数据推送到所述目标存储器中。
5.根据权利要求1所述的数据搬运方法,其特征在于,所述方法还包括:
通过所述中间队列控制所述等宽数据的读取速度大于写入速度。
6.根据权利要求1所述的数据搬运方法,其特征在于,将存储在所述中间队列的所述等宽数据写入和分发到一目标存储器之后,所述方法还包括:
按照预设数据配置通过单条命中操作在所述目标存储器中查询所述等宽数据;
将查询的所述等宽数据解析为多条数据,并对解析的所述多条数据进行处理。
7.根据权利要求1所述的数据搬运方法,其特征在于,在读取数据源中的数据之前,所述方法还包括:
指定所述数据源和所述目标存储器的之间的映射关系以及所述数据源和所述目标存储器中数据的类型。
8.一种数据搬运装置,其特征在于,所述装置包括:
数据读取模块,用于进行包括数据映射配置和数据类型配置的数据配置,基于所述数据配置读取数据源中的数据并将所述数据源中行键相同的多条数据压缩拼装为一条等宽数据;
数据存储模块,用于将从所述数据源读取的所述等宽数据存储在一中间队列;所述中间队列按照先进先出的原则实现数据的读取和写入;
数据写入模块,用于将存储在所述中间队列的所述等宽数据写入和分发到一目标存储器。
9.根据权利要求8所述的数据搬运装置,其特征在于,将数据源中行键相同的多条数据压缩拼装为一条等宽数据包括:
数据配置模块,用于在对数据进行压缩拼装时,自定义配置所述数据源中行键对应的每个字段和每个列的类型。
10.根据权利要求8所述的数据搬运装置,其特征在于,读取数据源中的数据包括:
数据处理模块,用于循环读取所述数据源中的数据到所述数据源的缓冲区,并对读取的数据进行映射操作以及自定义预处理;
已满判断模块,用于在对读取的数据进行映射操作以及自定义预处理之后,判断所述数据源是否已满;
数据推送模块,用于在判断所述数据源已满时,将数据推送到所述中间队列并循环读取所述数据源中的数据。
11.根据权利要求8所述的数据搬运装置,其特征在于,将所述等宽数据写入和分发到一目标存储器中包括:
数据分发模块,用于将所述数据源中行键相同的数据按照一致性哈希算法分发到相同的线程,并通过多线程的形式将数据写入所述目标存储器;
空数据判断模块,用于在将数据写入所述目标存储器时,判断所述目标存储器中是否存在空数据;
行键判断模块,用于在判断所述目标存储器中未存在所述空数据时,判断写入数据的行键是否相同;
数据拼装模块,用于在判断写入数据的行键相同时,将行键相同的数据进行拼装并将数据推送到所述目标存储器中。
12.根据权利要求8所述的数据搬运装置,其特征在于,所述装置还包括:
速度控制模块,用于通过所述中间队列控制所述等宽数据的读取速度大于写入速度。
13.根据权利要求8所述的数据搬运装置,其特征在于,将存储在所述中间队列的所述等宽数据写入和分发到一目标存储器之后,所述装置还包括:
数据查询模块,用于按照预设数据配置通过单条命中操作在所述目标存储器中查询所述等宽数据;
数据解析模块,用于将查询的所述等宽数据解析为多条数据,并对解析的多条数据进行处理。
14.根据权利要求8所述的数据搬运装置,其特征在于,在读取数据源中的数据之前,所述装置还包括:
数据指定模块,用于指定所述数据源和所述目标存储器的之间的映射关系以及所述数据源和所述目标存储器中数据的类型。
15.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-7任一项所述的数据搬运方法。
CN201710340072.4A 2017-05-15 2017-05-15 数据搬运方法、数据搬运装置及电子设备 Active CN107169098B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710340072.4A CN107169098B (zh) 2017-05-15 2017-05-15 数据搬运方法、数据搬运装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710340072.4A CN107169098B (zh) 2017-05-15 2017-05-15 数据搬运方法、数据搬运装置及电子设备

Publications (2)

Publication Number Publication Date
CN107169098A CN107169098A (zh) 2017-09-15
CN107169098B true CN107169098B (zh) 2020-06-30

Family

ID=59816412

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710340072.4A Active CN107169098B (zh) 2017-05-15 2017-05-15 数据搬运方法、数据搬运装置及电子设备

Country Status (1)

Country Link
CN (1) CN107169098B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116257494B (zh) * 2021-04-21 2023-12-08 华为技术有限公司 一种聚合通信的方法、系统和计算机设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103514274A (zh) * 2013-09-17 2014-01-15 宁波东冠科技有限公司 非关系型数据库HBase的数据迁移方法
CN104331460A (zh) * 2014-10-31 2015-02-04 北京思特奇信息技术股份有限公司 一种基于Hbase的数据读写操作方法及系统
CN106020717A (zh) * 2016-05-05 2016-10-12 联想(北京)有限公司 数据处理方法及电子设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9002907B2 (en) * 2010-08-30 2015-04-07 Unwired Planet, Llc Method and system for storing binary large objects (BLObs) in a distributed key-value storage system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103514274A (zh) * 2013-09-17 2014-01-15 宁波东冠科技有限公司 非关系型数据库HBase的数据迁移方法
CN104331460A (zh) * 2014-10-31 2015-02-04 北京思特奇信息技术股份有限公司 一种基于Hbase的数据读写操作方法及系统
CN106020717A (zh) * 2016-05-05 2016-10-12 联想(北京)有限公司 数据处理方法及电子设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"oracle行变列(多行变成一行/多行合并成一行/多行合并成多列/合并行)";放学后的泡泡;《CSDN,https://blog.csdn.net/rainyspring4540/article/details/50231521》;20151209;全部正文 *

Also Published As

Publication number Publication date
CN107169098A (zh) 2017-09-15

Similar Documents

Publication Publication Date Title
US11475034B2 (en) Schemaless to relational representation conversion
US10366053B1 (en) Consistent randomized record-level splitting of machine learning data
US10713589B1 (en) Consistent sort-based record-level shuffling of machine learning data
CN108038239B (zh) 一种异构数据源规范化处理方法、装置及服务器
US9619491B2 (en) Streamlined system to restore an analytic model state for training and scoring
CN112800095B (zh) 一种数据处理方法、装置、设备及存储介质
CN108536745B (zh) 基于Shell的数据表提取方法、终端、设备及存储介质
US11429566B2 (en) Approach for a controllable trade-off between cost and availability of indexed data in a cloud log aggregation solution such as splunk or sumo
US20200174969A1 (en) Value-based differential data
CN110069557B (zh) 数据传输方法、装置、设备及存储介质
CN113721862B (zh) 数据处理方法及装置
CN112307122A (zh) 一种基于数据湖的数据管理系统及方法
CN112363994A (zh) 数据库的处理方法、装置、电子装置和存储介质
US20230367815A1 (en) Energy-efficient hardware-software collaborative method and apparatus for graph processing
CN113076304A (zh) 一种分布式版本管理方法、装置和系统
CN113010542B (zh) 业务数据处理方法、装置、计算机设备及存储介质
CN107169098B (zh) 数据搬运方法、数据搬运装置及电子设备
CN116760661A (zh) 数据存储方法、装置、计算机设备、存储介质和程序产品
CN114968917A (zh) 一种文件数据快速导入方法及装置
CN112579673A (zh) 一种多源数据处理方法及装置
CN106776772B (zh) 一种数据检索的方法及装置
CN113448957A (zh) 一种数据查询方法和装置
CN112817930A (zh) 一种数据迁移的方法和装置
CN111782834A (zh) 图像检索的方法、装置、设备及计算机可读存储介质
Liao et al. Bullion: A Column Store for Machine Learning

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