CN106970929B - 数据导入方法及装置 - Google Patents

数据导入方法及装置 Download PDF

Info

Publication number
CN106970929B
CN106970929B CN201610811723.9A CN201610811723A CN106970929B CN 106970929 B CN106970929 B CN 106970929B CN 201610811723 A CN201610811723 A CN 201610811723A CN 106970929 B CN106970929 B CN 106970929B
Authority
CN
China
Prior art keywords
data
original data
relational database
file system
imported
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
CN201610811723.9A
Other languages
English (en)
Other versions
CN106970929A (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.)
Ant Fortune Shanghai Financial Information Service Co ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201610811723.9A priority Critical patent/CN106970929B/zh
Publication of CN106970929A publication Critical patent/CN106970929A/zh
Application granted granted Critical
Publication of CN106970929B publication Critical patent/CN106970929B/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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • 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/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/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • 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

Abstract

本申请提供数据导入方法及装置,所述方法包括:解析分布式文件系统中待导入的原始数据的数据分布;根据所述原始数据的数据分布,将所述原始数据的数据总条数均匀地进行划分;基于映射归纳算法,将均匀划分后的每一部分数据写入到对应的数据存储文件中;将所述数据存储文件移至非关系型数据库的预设目录下。应用本申请实施例,通过解析原始数据的数据分布,从而使得导入的原始数据分布均匀。避免了因现有技术中数据分布不均匀导致的数据查询效率低。

Description

数据导入方法及装置
技术领域
本申请涉及互联网技术领域,尤其涉及一种数据导入方法及装置。
背景技术
随着互联网的不断发展,以及社交网络、智能设备的发展和应用,使得数据量呈爆炸式增长。
在海量数据分析例如OLAP(Online Analytical Processing,联机分析处理)的应用中,传统的关系型数据库(SQL数据库)已经无法满足大规模数据处理的场景了,取而代之的是各种非关系型数据库(NoSQL数据库),例如HBase。HBase(Hadoop Database)是一个分布式、面向列的开源数据库,利用HBase可以在廉价PC Server上搭建大规模结构化存储集群,从而高效地进行大规模数据处理。
一般的,由于依然有好多数据存储在关系型数据库中,所以在业务处理过程中,常常需要先将存储在关系型数据库中的数据,导入到非关系型数据库中,然后才能进行大规模数据处理。
现有技术中,数据导入的方式通常有如下:
一种方法,是调用非关系型数据库提供的API接口,逐条将存储在关系型数据库中的数据插入到非关系型数据库中。这种方式由于涉及到大量客户端、服务器交互、操作日志落地等不必要的网络、I/O操作,所以会使得导入效率较低,如今大多采用下一种方式。
另一种方法,是使用非关系型数据库(如HBase)提供的原生bulk load功能(即快速导入的功能)。该功能实现的过程为:
A,将存储在关系型数据库中的数据上传至HDFS(Hadoop Distributed FileSystem,分布式文件系统);
B,创建一个region;所述region是非关系型数据库中负载均衡的基本单元;
C,运行映射归纳(MapReduce)程序,生成数据存储文件;
D,将所生成的数据存储文件(如HFile)移动至非关系型数据库的预设目录下。
但是,这种方式没有考虑数据分布,而非关系型数据库是分布式数据库,如果导入的数据分布不均匀,就会造成非关系型数据库的数据查询效率较低。
发明内容
本申请提供数据导入方法及装置,以解决现有存在有导入非关系型数据库中的数据出现分布不均匀的情况下,会造成数据查询效率较低的问题。
根据本申请实施例提供的一种数据导入方法,所述方法应用于非关系型数据库,所述方法包括:
解析分布式文件系统中待导入的原始数据的数据分布;
根据所述原始数据的数据分布,将所述原始数据的数据总条数均匀地进行划分;
基于映射归纳算法,将均匀划分后的每一部分数据写入到对应的数据存储文件中;
将所述数据存储文件移至非关系型数据库的预设目录下。
可选的,所述方法还包括:
在解析分布式文件系统中待导入的原始数据的数据分布之前,将待导入的原始数据移至分布式文件系统。
可选的,所述将待导入的原始数据移至分布式文件系统,具体包括:
导出关系型数据库中的原始数据,并所述原始数据上传至分布式文件系统;
或者,
使用预设工具从关系型数据库中提取原始数据至分布式文件系统。
可选的,所述解析分布式文件系统中待导入的原始数据的数据分布,具体包括:
基于分布式文件系统中待导入的原始数据创建Hive外表;
基于所述Hive外表,解析所述原始数据的数据分布。
可选的,所述基于所述Hive外表,解析所述原始数据的数据分布,具体包括:
根据所述原始数据大小与region大小,计算得出预分配的region个数;所述region为非关系型数据库中进行负载均衡的基本单元;
统计所述原始数据的数据总条数;
根据所述原始数据的总条数和所述region个数,计算得出每个region能容纳的条数;
将所述原始数据的总条数和所述条数取余,将余数为0的行号确定为region的终止行。
可选的,在所述基于映射归纳算法,将均匀划分后的每一部分数据写入到对应的数据存储文件中之前,所述方法还包括:
统一在配置文件中设置参数。
可选的,所述参数包括:
非关系型数据库主键、非关系型数据库列簇名、导入数据列编号、原始数据分隔符、非关系型数据库表名、数据存储文件的存储目录。
可选的,所述非关系型数据库主键为联合主键,所述联合主键为多个主键。
可选的,所述非关系型数据库包括HBase;
所述分布式文件系统包括HDFS;
所述数据存储文件包括HFile。
根据本申请实施例提供的一种数据导入装置,所述装置应用于非关系型数据库,所述装置包括:
解析单元,解析分布式文件系统中待导入的原始数据的数据分布;
划分单元,根据所述原始数据的数据分布,将所述原始数据的数据总条数均匀地进行划分;
写入单元,基于映射归纳算法,将均匀划分后的每一部分数据写入到对应的数据存储文件中;
移动单元,将所述数据存储文件移至非关系型数据库的预设目录下。
可选的,在所述解析单元之前,所述装置还包括:
移动子单元,将待导入的原始数据移至分布式文件系统。
可选的,所述移动子单元,具体包括:
第一移动子单元,导出关系型数据库中的原始数据,并所述原始数据上传至分布式文件系统;
或者,
第二移动子单元,使用预设工具从关系型数据库中提取原始数据至分布式文件系统。
可选的,所述解析单元,具体包括:
创建子单元,基于所述分布式文件系统中待导入的原始数据创建Hive外表;
解析子单元,基于所述Hive外表,解析所述原始数据的数据分布。
可选的,所述解析子单元,具体包括:
第一计算子单元,根据所述原始数据大小与region大小,计算得出预分配的region个数;所述region为非关系型数据库中进行负载均衡的基本单元;
统计子单元,统计所述原始数据的数据总条数;
第二计算子单元,根据所述原始数据的总条数和所述region个数,计算得出每个region能容纳的条数;
确定子单元,将所述原始数据的总条数和所述条数取余,将余数为0的行号确定为region的终止行
可选的,在所述写入单元之前,所述装置还包括:
配置单元,统一在配置文件中设置参数。
可选的,所述参数包括:
非关系型数据库主键、非关系型数据库列簇名、导入数据列编号、原始数据分隔符、非关系型数据库表名、数据存储文件的存储目录。
可选的,所述非关系型数据库主键为联合主键,所述联合主键为多个主键。
可选的,所述非关系型数据库包括HBase;
所述分布式文件系统包括HDFS;
所述数据存储文件包括HFile。
本申请实施例中,通过Hive外表解析原始数据的分布情况,从而均匀地将原始数据的数据总条数进行划分,并通过映射归纳算法将均匀划分后的每一部分数据写入到对应的数据存储文件中,最后将所述数据存储文件转移到非关系型数据库的预设目录下,如此完成数据导入过程。由于导入过程中解析了原始数据的数据分布,使得导入后的原始数据分布均匀,所以提高了非关系型数据库进行数据查询时的查询效率,避免了因现有技术中数据分布不均匀导致的数据查询效率低。并且由于Hive外表解析时无需移动原始数据到Hive外表中,所以可以避免消耗系统I/O资源。
附图说明
图1是本申请一实施例提供的HBase的系统结构图;
图2是本申请一实施例提供的region的示意图;
图3是本申请一实施例提供的数据导入方法的流程图;
图4是本申请一实施例提供的创建HBase表的流程图;
图5是本申请提供的数据导入装置所在设备的一种硬件结构图;
图6是本申请一实施例提供的数据导入装置的模块示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
图1所示为本申请一实施例提供的HBase的系统架构图。
本实施例中非关系型数据库以HBase为例,一般的,在HBase系统中,可以有一台Master Server(主服务器)以及若干台Region Server(从属服务器)。
数据可以是根据region分布在RegionServer上的。所述region为HBase中负载均衡的基本单元。每个region都会有一个起始行(startKey)和一个终止行(endKey),通过所述起始行和终止行可以确定一个region限定的区间,对于某一条数据在哪个region上就是由所述起始行和终止行限定的。例如,某region的startKey:111,endKey:222,则rowkey=200的数据落在该region上,rowkey=1111的数据也是落在该region上,rowkey=111a也是落在该region上。
如图2所示为region的示意图,某个RegionServer上有4个region分别是:region1,region2,region3,region。
其中,region1的stratKey:-∞;endKey:100;
region2的stratKey:100;endKey:200;
region3的stratKey:200;endKey:300;
region4的stratKey:300;endKey:+∞。
一段数据的rowkey为:15,208,115,7000;由于15是位于-∞到100之间,所以15的数据位于region1上;
由于208是位于100到200之间,所以208的数据位于region2上;
由于115是位于200到300之间,所以115的数据位于region3上;
由于7000是位于300到+∞之间,所以7000的数据位于region4上。
每个RegionServer可以有多个region,但每个Region只能对一个RegionServer提供服务。
如图1所示,RegionServer 1中具有3个region分别为region a,region b,regionc;RegionServer 2中具有2个region分别为region d,region e。
通常,最初每个RegionServer中都只创建一个region,所述region可以有大小限制,当region负载的数据超过阈值(本身的大小)的情况下,该region将会分裂,成为两个新的region。分裂会消耗系统I/O资源。
由于现有的非关系型数据库不感知原始数据的数据分布,所以region的stratKey和endKey容易设置的不合理,从而造成导入的数据分布不均匀。例如2个region,原始数据的数据总条数为10000条,rowkey从1-10000,由于不感知原始数据的数据分布,假设regionA的startkey=1,endKey=10000;region B的startkey=10000,endKey=20000。这样原始数据只会写到region A中,从而造成导入的数据分布不均匀,在非关系型数据库并行进行查询时,少量region被查询多就会成为热点,从而导致查询效率下降。
为了解决上述问题,请参见图3,为本申请一实施例提供的数据导入方法的流程图,所述方法应用于非关系型数据库,包括以下步骤:
步骤110:将待导入的原始数据移至分布式文件系统。
本实施例中,非关系型数据库存储需要依赖分布式文件系统(HadoopDistributed File System,HDFS),所述HDFS是一种高度容错性的系统,适合部署在廉价的PC Server上,适用于大规模数据的应用。
将待导入的原始数据移至HDFS(Hadoop Distributed File System,分布式文件系统),可以通过如下方式实现:
第一种,导出关系型数据库中的原始数据,并所述原始数据上传至分布式文件系统(HDFS)。
具体地,从关系型数据库中导出的原始数据后,所述原始数据为文本格式,之后,将所述文本格式上传至HDFS。
通过如下命令可以将原始数据移动上传至HDFS:
hadoop fs–put locaFilePath destFilePath
第二种,使用预设工具从关系型数据库中提取原始数据至分布式文件系统(HDFS)。
所述预设工具可以用于在将一个关系型数据库中的数据导入到Hadoop的HDFS中。
例如Soop,所述Sqoop是一款开源的主要用于在Hadoop(Hive)与传统的关系型数据库之间进行数据传递的工具,使用该Sqoop可以将一个关系型数据库中的数据导入到HDFS中;也可以将HDFS中的数据导入到关系型数据库中。
以Soop为例,需要配置如下所示的参数:
DB_CONNECT_URL//数据库连接字符串
USER_NAME=alipay//数据库用户名
PASSWORD=ali88//数据库密码
HDFS_PATH=tmp/bulkload/userInfo//hdfs原始数据目录
MAP_COUNT=10//map个数
TABLE_NAME=user_info//数据表名
COLUMNS=user_id,user_name,addr/原始源数据表列名
SPERATOR=’\001’//分隔符
并通过如下所示的命令进行转移:
sqoop import--append--connect$DB_CONNECT_URL--username$USER_NAME--password$PASSWORD--target-dir$HDFS_PATH--num-mappers$MAP_COUNT--table$TABLE_NAME--columns$COLUMNS--fields-terminated-by$SPERATOR
需要说明的是,上文提及的代码仅为本实施例将原始数据转移至HDFS的部分代码示例,为将本实施例阐述得清楚简洁,对于本实施例发全部代码在此不作赘述。
本步骤是数据导入方法的准备步骤,在某些实施例中,如果分布式文件系统中已经存在有原始数据,那么可以没有本步骤,直接从步骤120开始。
步骤120:解析分布式文件系统中待导入的原始数据的数据分布。
本实施例中,所述解析原始数据的数据分布情况后,进一步地可以将其数据总条数均匀地进行划分。
具体地,所述步骤120,可以包括如下步骤:
A1:基于分布式文件系统中待导入的原始数据创建Hive外表;
本实施例中,Hive外表可以直接基于存储在HDFS上的原始数据创建,利用hive外表可以统计原始数据的数据分布情况,而且无需将原始数据到Hive外表中,如此,可以避免消耗系统I/O资源。使用Hive外表只要掌握Hive Sql这种非常通用的语法就可以,简单方便。
Hive是基于Hadoop的一个数据仓库工具,可以将原始数据映射为一张数据库表,并可以提供一些简单的sql查询功能。并可以将sql语句转换为MapReduce任务进行运行。
值得一提的是,在创建Hive外表过程中,需要设置如下内容:
设置Hive外表的表名;
设置字段;
设置原始数据在HDFS的目录;
设置原始数据分隔符。
其中,所述字段与原始数据的列具有一一对应的映射关系。如下表1所示的原始数据:
表1
id name age
1 张三 22
2 李四 18
3 王二 40
1000 赵六 75
创建Hive外表时需要确定字段(a,b,c)表示的原始数据,根据原始数据的列顺序,可以确定字段id=a,name=b,age=c。
值得一提的是,所述原始数据分隔符与必须与前述的分隔符一致。例如,前述Soop方式中,设置分隔符为’\001’,则此处设置原始数据分隔符也必须是’\001’。
A2:基于所述Hive外表,解析所述原始数据的数据分布。
本实施例中,在创建Hive外表后,基于该Hive外表,可以解析所述原始数据的数据分布。
本实施例中,为了使得原始数据均匀分布,需要让所述原始数据均匀地负载到各region上,即使每个region上的数据的条数相同。为此,需要做如下所示的处理:
首先:根据所述原始数据大小与region大小,计算得出预分配的region个数;所述region为非关系型数据库中进行负载均衡的基本单元;
计算出需要创建的region个数,可以通过如下公式计算得到:
region个数=原始数据大小/region大小
举例说明:假设原始数据为2TB,region为4GB。首先,将2TB换算成GB为2000GB,需要保持与region单位一致。根据上述公式计算:
region个数=2000/4=500个。
所以,需要创建的region个数为500个。
值得一提的,region大小不宜设置过小,过小容易在有新增数据的情况下导致频繁的分裂,分裂会消耗系统资源。也不宜过大,过大容易造成region个数较少,从而并行度就小了,在查询大量数据时效率较低。
接着:统计所述原始数据的数据总条数;
本实施例,可以通过select count(*)from hive_user_info,统计hive外表名词为hive_user_info的原始数据的数据总条数。
之后:根据所述原始数据的总条数和所述region个数,计算得出每个region能容纳的条数;
本实施例中,沿用前述例子,假设统计原始数据的数据总条数为100000000条,region数据为500个;
所以计算得出每个region条数=100000000/500=200000条。
最后,将所述原始数据的总条数和所述条数取余,将余数为0的行号确定为region的终止行。
如前所述,每个rogion都具有一个开始行startKey和终止行endKey。
假设当前数据的行号为rn,region上数据条数为num_per_region,则当rn%num_per_region=0时,将所行号为n确定为终止行。
确定终止行的代码如下所示:
Figure BDA0001111646490000111
Figure BDA0001111646490000121
上述代码中a,b,c即为创建Hive外表时,设置的字段。需要说明的是,上文提及的代码仅为本实施例确定终止行的部分代码示例,为将本实施例阐述得清楚简洁,对于本实施例发全部代码在此不作赘述。
在本实施例中,在确定所有的终止行后,还可以根据所确定的终止行创建预分配region的目标数据表。
所述目标数据表包括HBase表,用于记录确定的终止行。
如图4所示为创建预分配region的目标数据表的流程示意图:
B1:将所确定的终止行写入文本文件中。
所述文本文件例如txt。
B2:创建二位数组。
例如split[][],所述二位数组的长度为region个数。
B3:读取当前终止行。
第一次读取时,是以文本文件的第一行为当前终止行的。即从第一行开始,逐行读取的。
B4:判断所述当前终止行是否为空。
在当前终止行为空的情况下,说明已经读取完所有的终止行,可以执行B6;
在当前终止行不为空的情况下,说明还没有读取完所有的终止行,可以执行B5。
B5:在所述当前终止行不为空的情况下,将所述终止行存入所述二维数组中,并将所述当前终止行的下一终止行确定为当前终止行,重复B3。
值得一提的是,所述文本文件中的终止行数据类型为String,而二位数组的数据类型为Byte,所以需要先将所述终止行的数据类型转换为Byte后,才能存入到而二维数组中。
B6:在所述当前终止行为空的情况下,根据所述二位数组,创建目标数据表。
以HBase为例,通过调用HBase提供的用于创建HBase表的API,具体地,如下所示:
HbaseAdmin.createTable(HTable,split[][])
通过上述API调用的createTable方法,根据二维数组createTable,创建目标数据表即HTable。
步骤130:基于映射归纳算法,将均匀划分后的每一部分数据写入到数据存储文件中。
本实施例中,映射归纳算法即MapReduce是一种编程模型,可以用于大规模数据的并行计算。Map(映射)是指定一个Map函数,用来把一组键值对(KeyValue)映射成一组新的键值对;Reduce(归纳)是指定并发的Reduce函数,用来保证所述映射的键值对都共享相同的键组。
以HBase为例,通过HBase中自带的导入工具ImportTsv,运行MapReduce,将上述原始数据写入到regino中,从而生成HFile文件。HFile文件是HBase中的数据存储文件,为二进制格式文件。
在本实施例中,通过MapReduce,将均匀划分的原始数据写入到HFile文件中。
在本申请的一个具体地实施例中,所述步骤130之前所述方法还可以包括:
统一在配置文件中设置参数。
所述参数可以包括:非关系型数据库主键、非关系型数据库列簇名、导入数据列编号、原始数据分隔符、非关系型数据库表名、数据存储文件的存储目录。
值得一提的是,所述非关系型数据库主键为联合主键,所述联合主键为多个主键
如下以HBase为例所示的配置文件:
/**HBase主键涉及数据列编号*/
ROWKEY:0,1,2
/**HBase列簇名*/
COLUMN_FAMILY:cf
/**导入数据列编号*/
COLUMNS:3,4,5
/**原始数据分隔符*/
SEPERATOR:’\001’
/**HBase表名*/
TABLE_NAME:hbase_user_info
/**HFile的存储目录*/
HFILE_PATH:/tmp/hfile/userinfo
通过将原本零散在命令行中设置的参数,统一在配置文件中进行设置。如此,方便查看和修改。
在配置文件中设置好参数后,可以通过解析该配置文件中的参数,可以设置上下文变量;
设置数据输入格式,例如TextInputFormat.class
设置键(Key)的输出格式,例如ImmutableBytesWritable.class
设置值(Value)的输出格式,例如Put.class
在所述Map阶段:
根据上述上下文变量,获取作业参数如非关系型数据库表名、列簇名、原始数据分隔符等。
在本实施例中,在通过基于Map算法之后,可以通过Reduce算法将所述Map算法输出的Key值和Value值进行收集整理。可以将Map算法的输出作为Reduce算法的输入,然后Reduce算法便可以将Map算法输出的Key值和Value值写入到数据存储文件中。
例如,使用HBase提供的Reduce方法
HFileOutputFormat2.
configureIncrementaILoad()
通过上述代码来实现Reduce的过程。
需要说明的是,上文提及的代码仅为本实施例Reduce的部分代码示例,为将本实施例阐述得清楚简洁,对于本实施例发全部代码在此不作赘述。
步骤150:将所述数据存储文件转移到非关系型数据库的预设目录中。
本实施例中,以HBase为例,可以通过completeBulkLoad方法将HFile移至HBase的预设目录下。
例如,HFile的路径为:/tmp/hfile/userinfo;HBase表名为:
hbase_user_info;那么,可以使用如下命令:
/**设置HFile路径**/
OUTPATH=/tmp/hfile/userinfo
/**设置HBase表名**/
TABLENAME=hbase_user_info
hadoop jar hbase-server-0.94.jar completebulkload$OUTPUTPATH
$TABLENAME
需要说明的是,上文提及的代码仅为本实施例将HFile转移到HBase中的部分代码示例,为将本实施例阐述得清楚简洁,对于本实施例发全部代码在此不作赘述。
通过本实施例,利用Hive外表解析原始数据的分布情况,从而均匀地将所述原始数据的数据总条数进行划分,并通过映射归纳算法将均匀划分后的每一部分数据写入到对应的数据存储文件中,最后将所述数据存储文件转移到非关系型数据库的预设目录下,如此完成数据导入过程。由于导入过程中解析了原始数据的数据分布,使得导入后的原始数据分布均匀,所以提高了非关系型数据库进行数据查询时的查询效率,避免了因现有技术中数据分布不均匀导致的数据查询效率低。并且由于Hive外表解析时无需移动原始数据到Hive外表中,所以可以避免消耗系统I/O资源。
与前述数据导入方法实施例相对应,本申请还提供了数据导入方法装置的实施例。
本申请数据导入方法装置的实施例可以分别应用在服务器设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本申请数据导入装置所在设备的一种硬件结构图,除了图5所示的处理器、网络接口、内存以及非易失性存储器之外,实施例中装置所在的设备通常根据该数据导入的实际功能,还可以包括其他硬件,对此不再赘述。
请参见图6,为本申请一实施例提供的数据导入装置的模块示意图,所述装置应用于非关系型数据库,所述装置包括:解析单元210、划分单元220、写入单元230和转移单元240。
其中,所述解析单元210,解析分布式文件系统中待导入的原始数据的数据分布;
所述划分单元220,根据所述原始数据的数据分布,将所述原始数据的数据总条数均匀地进行划分;
所述写入单元230,基于映射归纳算法,将均匀划分后的每一部分数据写入到对应的数据存储文件中;
所述第二移动单元240,将所述数据存储文件移至非关系型数据库的预设目录下。
在一个可选的实现方式中:
在所述解析单元210之前,所述装置还包括:
移动子单元,将待导入的原始数据移至分布式文件系统。
在一个可选的实现方式中:
所述移动子单元,具体包括:
第一移动子单元,导出关系型数据库中的原始数据,并所述原始数据上传至分布式文件系统;
或者,
第二移动子单元,使用预设工具从关系型数据库中提取原始数据至分布式文件系统。
在一个可选的实现方式中:
所述解析单元210,具体包括:
创建子单元,基于所述分布式文件系统中待导入的原始数据创建Hive外表;
解析子单元,基于所述Hive外表,解析所述原始数据的数据分布。
在一个可选的实现方式中:
所述解析子单元,具体包括:
第一计算子单元,根据所述原始数据大小与region大小,计算得出预分配的region个数;所述region为HBase中进行负载均衡的基本单元;
统计子单元,统计所述原始数据的数据总条数;
第二计算子单元,根据所述原始数据的总条数和所述region个数,计算得出每个region能容纳的条数;
确定子单元,将所述原始数据的总条数和所述条数取余,将余数为0的行号确定为region的终止行。
在一个可选的实现方式中:
在所述写入单元230之前,所述装置还包括:
配置单元,统一在配置文件中设置参数。
在一个可选的实现方式中:
所述参数包括:
非关系型数据库主键、非关系型数据库列簇名、导入数据列编号、原始数据分隔符、非关系型数据库表名、数据存储文件的存储目录。
在一个可选的实现方式中:
所述非关系型数据库主键为联合主键,所述联合主键为多个主键。
在一个可选的实现方式中:
所述非关系型数据库包括HBase;
所述分布式文件系统包括HDFS;
所述数据存储文件包括HFile。
综上所述,通过申请本实施例,利用Hive外表解析原始数据的分布情况,从而均匀地将所述原始数据的数据总条数进行划分,并通过映射归纳算法将均匀划分后的每一部分数据写入到对应的数据存储文件中,最后将所述数据存储文件转移到非关系型数据库的预设目录下,如此完成数据导入过程。由于导入过程中解析了原始数据的数据分布,使得导入后的原始数据分布均匀,所以提高了非关系型数据库进行数据查询时的查询效率,避免了因现有技术中数据分布不均匀导致的数据查询效率低。并且由于Hive外表解析时无需移动原始数据到Hive外表中,所以可以避免消耗系统I/O资源。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

Claims (16)

1.一种数据导入方法,其特征在于,所述方法应用于非关系型数据库,所述方法包括:
将待导入的原始数据从关系型数据库移至分布式文件系统,并解析分布式文件系统中的所述待导入的原始数据的数据分布;
根据所述原始数据的数据分布,将所述原始数据的数据总条数均匀地进行划分;
基于映射归纳算法,将均匀划分后的每一部分数据写入到对应的数据存储文件中;
将所述数据存储文件移至非关系型数据库的预设目录下。
2.根据权利要求1所述的方法,其特征在于,所述将待导入的原始数据从关系型数据库移至分布式文件系统,具体包括:
导出关系型数据库中的原始数据,并所述原始数据上传至分布式文件系统;
或者,
使用预设工具从关系型数据库中提取原始数据至分布式文件系统。
3.根据权利要求1所述的方法,其特征在于,所述解析分布式文件系统中待导入的原始数据的数据分布,具体包括:
基于分布式文件系统中待导入的原始数据创建Hive外表;
基于所述Hive外表,解析所述原始数据的数据分布。
4.根据权利要求3所述的方法,其特征在于,所述基于所述Hive外表,解析所述原始数据的数据分布,具体包括:
根据所述原始数据大小与region大小,计算得出预分配的region个数;所述region为非关系型数据库中进行负载均衡的基本单元;
统计所述原始数据的数据总条数;
根据所述原始数据的总条数和所述region个数,计算得出每个region能容纳的条数;
将所述原始数据的总条数和所述条数取余,将余数为0的行号确定为region的终止行。
5.根据权利要求1所述的方法,其特征在于,在所述基于映射归纳算法,将均匀划分后的每一部分数据写入到对应的数据存储文件中之前,所述方法还包括:
统一在配置文件中设置参数。
6.根据权利要求5所述的方法,其特征在于,所述参数包括:
非关系型数据库主键、非关系型数据库列簇名、导入数据列编号、原始数据分隔符、非关系型数据库表名、数据存储文件的存储目录。
7.根据权利要求6所述的方法,其特征在于,所述非关系型数据库主键为联合主键,所述联合主键为多个主键。
8.根据权利要求1-7中任一项所述的方法,其特征在于,所述非关系型数据库包括HBase;
所述分布式文件系统包括HDFS;
所述数据存储文件包括HFile。
9.一种数据导入装置,其特征在于,所述装置应用于非关系型数据库,所述装置包括:
解析单元,将待导入的原始数据从关系型数据库移至分布式文件系统,并解析分布式文件系统中的所述待导入的原始数据的数据分布;
划分单元,根据所述原始数据的数据分布,将所述原始数据的数据总条数均匀地进行划分;
写入单元,基于映射归纳算法,将均匀划分后的每一部分数据写入到对应的数据存储文件中;
移动单元,将所述数据存储文件移至非关系型数据库的预设目录下。
10.根据权利要求9所述的装置,其特征在于,所述移动子单元,具体包括:
第一移动子单元,导出关系型数据库中的原始数据,并所述原始数据上传至分布式文件系统;
或者,
第二移动子单元,使用预设工具从关系型数据库中提取原始数据至分布式文件系统。
11.根据权利要求9所述的装置,其特征在于,所述解析单元,具体包括:
创建子单元,基于所述分布式文件系统中待导入的原始数据创建Hive外表;
解析子单元,基于所述Hive外表,解析所述原始数据的数据分布。
12.根据权利要求11所述的装置,其特征在于,所述解析子单元,具体包括:
第一计算子单元,根据所述原始数据大小与region大小,计算得出预分配的region个数;所述region为非关系型数据库中进行负载均衡的基本单元;
统计子单元,统计所述原始数据的数据总条数;
第二计算子单元,根据所述原始数据的总条数和所述region个数,计算得出每个region能容纳的条数;
确定子单元,将所述原始数据的总条数和所述条数取余,将余数为0的行号确定为region的终止行。
13.根据权利要求9所述的装置,其特征在于,在所述写入单元之前,所述装置还包括:
配置单元,统一在配置文件中设置参数。
14.根据权利要求13所述的装置,其特征在于,所述参数包括:
非关系型数据库主键、非关系型数据库列簇名、导入数据列编号、原始数据分隔符、非关系型数据库表名、数据存储文件的存储目录。
15.根据权利要求14所述的装置,其特征在于,所述非关系型数据库主键为联合主键,所述联合主键为多个主键。
16.根据权利要求9-15中任一项所述的装置,其特征在于,所述非关系型数据库包括HBase;
所述分布式文件系统包括HDFS;
所述数据存储文件包括HFile。
CN201610811723.9A 2016-09-08 2016-09-08 数据导入方法及装置 Active CN106970929B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610811723.9A CN106970929B (zh) 2016-09-08 2016-09-08 数据导入方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610811723.9A CN106970929B (zh) 2016-09-08 2016-09-08 数据导入方法及装置

Publications (2)

Publication Number Publication Date
CN106970929A CN106970929A (zh) 2017-07-21
CN106970929B true CN106970929B (zh) 2020-09-01

Family

ID=59334402

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610811723.9A Active CN106970929B (zh) 2016-09-08 2016-09-08 数据导入方法及装置

Country Status (1)

Country Link
CN (1) CN106970929B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107463692B (zh) * 2017-08-11 2019-10-18 山东合天智汇信息技术有限公司 超大文本数据同步到搜索引擎的方法和系统
CN108170815B (zh) * 2017-12-29 2022-07-05 中国银联股份有限公司 一种数据处理方法、装置及存储介质
CN108334596B (zh) * 2018-01-31 2020-08-18 华南师范大学 一种面向大数据平台的海量关系数据高效并行迁移方法
CN111090645B (zh) * 2019-10-12 2024-03-01 平安科技(深圳)有限公司 基于云存储的数据传输方法、装置及计算机设备
CN112905676A (zh) * 2019-12-03 2021-06-04 中兴通讯股份有限公司 一种数据文件的导入方法及装置
CN111159112B (zh) * 2019-12-20 2022-03-25 新华三大数据技术有限公司 数据处理方法及系统
CN112306421B (zh) * 2020-11-20 2021-04-30 昆易电子科技(上海)有限公司 一种用于存储分析测量数据格式mdf文件的方法和系统
CN113297188B (zh) * 2021-02-01 2022-11-15 淘宝(中国)软件有限公司 数据处理方法以及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104408159A (zh) * 2014-12-04 2015-03-11 曙光信息产业(北京)有限公司 一种数据关联、加载、查询方法及装置
CN105630896A (zh) * 2015-12-21 2016-06-01 浪潮集团有限公司 一种快速导入海量数据的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9542404B2 (en) * 2014-02-17 2017-01-10 Netapp, Inc. Subpartitioning of a namespace region

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104408159A (zh) * 2014-12-04 2015-03-11 曙光信息产业(北京)有限公司 一种数据关联、加载、查询方法及装置
CN105630896A (zh) * 2015-12-21 2016-06-01 浪潮集团有限公司 一种快速导入海量数据的方法

Also Published As

Publication number Publication date
CN106970929A (zh) 2017-07-21

Similar Documents

Publication Publication Date Title
CN106970929B (zh) 数据导入方法及装置
US11475034B2 (en) Schemaless to relational representation conversion
JP5298117B2 (ja) 分散コンピューティングにおけるデータマージング
Wang et al. Performance prediction for apache spark platform
US10114846B1 (en) Balanced distribution of sort order values for a multi-column sort order of a relational database
CN107729399B (zh) 数据处理的方法和装置
CN105144080A (zh) 用于元数据管理的系统
CN106991100B (zh) 数据导入方法及装置
CN107301214A (zh) 在hive中数据迁移方法、装置及终端设备
WO2015074477A1 (zh) 路径分析方法和装置
CN106919697B (zh) 一种将数据同时导入多个Hadoop组件的方法
CN106557307B (zh) 业务数据的处理方法及处理系统
Caldarola et al. Big data: A survey-the new paradigms, methodologies and tools
US10678789B2 (en) Batch data query method and apparatus
CN113177090A (zh) 数据处理方法及装置
CN101645073A (zh) 一种将已有数据库文件导入嵌入式数据库的方法
Murazzo et al. Database NewSQL performance evaluation for big data in the public cloud
CN104714983B (zh) 分布式索引的生成方法及装置
US11620311B1 (en) Transformation of directed graph into relational data
CN106776617B (zh) 日志文件的保存方法和装置
WO2016119508A1 (zh) 基于Spark系统的大规模对象识别方法
CN115658680A (zh) 数据存储方法、数据查询方法和相关装置
CN105224596A (zh) 一种访问数据的方法及装置
Ghosh et al. NoSQL Database: An Advanced Way to Store, Analyze and Extract Results From Big Data
Benlachmi et al. Performance Evaluation of Hadoop Tools Using Word Count Algorithm

Legal Events

Date Code Title Description
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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200925

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200925

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Patentee before: Alibaba Group Holding Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220419

Address after: Room 602, No. 618 Wai Road, Huangpu District, Shanghai

Patentee after: Ant fortune (Shanghai) Financial Information Service Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee before: Innovative advanced technology Co.,Ltd.