Hadoop数据文件的生成方法与解析方法

文档序号:9375222阅读:1931来源:国知局
Hadoop数据文件的生成方法与解析方法
【技术领域】
[0001]本发明涉及信息技术行业数据库技术领域,尤其涉及一种Hadoop数据文件的生成方法与解析方法。
【背景技术】
[0002]在当今大数据背景下,产生了多种各样的大数据处理工具,Apache Hadoop就是其中之一。它是一个Apache基金会的顶级开源项目,已被广泛应用于需要处理大数据的项目和系统中。
[0003]HadoopMapreduce是Hadoop处理数据的框架模型,其通过mapreduce编程,读取海量数据,并将每条数据中具有相同键值的数据进行归类处理。在mapreduce编程时需要指定两个重要参数:一为mapred.1nput, dir,用于指定数据源文件的地址;二为mapreduce.1nputformat.class,用于解析数据文件中的每条数据记录。
[0004]Hadoopmapreduce在处理数据时,会将输入数据文件中的数据按行进行读取,并将这行数据输入至mapreduce程序处理,mapreduce程序根据一行数据和指定的列分割符,将这一行的数据解析成一个字符串数组,通过数组下标来获取指定数据,如行数据为:a|b|c,列分割符为“ I ”,则行数据在被解析后即为一个数组,如:Str[2] { “a”,”b”,”c”},其取值方式为第一列为Str [O]的值a,第二列为Str [I]的值b,第三列为Str [2]的值c
[0005]由于需要在mapreduce计算时把输入的每行数据解析成数组,并需要指定数组下标来获取对应数据,这样就容易导致开发人员在编码时需要了解这行数据的列偏移量及其实际含义,这容易导致设置错误数组下标,读取错位数据,导致程序错误,程序开发效率降低,同时造成程序代码晦涩难懂。
[0006]同时,当输入文件中包含多种数据类型,即存在列数不同的异构数据或列数相同但数据类型不同的数据时,如数据类型A的行值为a I b I c,数据类型B的行值a | b | c | d | e,或两种数据A、B的行值均表现为a|b|c,但实际业务含义不同。由于无法通过解析后的数组长度唯一识别其数据类型,导致mapreduce程序对多数据源输入的支持较弱。

【发明内容】

[0007](一 )要解决的技术问题
[0008]鉴于上述技术问题,本发明提供了一种Hadoop数据文件的生成方法与解析方法,以提高数据的可识别性,进而提高程序开发效率和程序代码的可读性,同时提高mapreduce程序对多数据源输入的支持。
[0009]( 二)技术方案
[0010]根据本发明的一个方面,提供了一种Hadoop数据文件的生成方法。该Hadoop数据文件的生成方法包括:
[0011]步骤1,应用程序在输出Hadoop数据对象时,根据Hadoop数据对象的类型,在Hadoop数据对象中添加标签数据;
[0012]步骤2,根据一个或多个Hadoop数据对象,生成一个Hadoop数据文件,其中,每个Hadoop数据对象作为Hadoop数据文件的一行,并且标签数据为该行Hadoop数据对象中的一列。
[0013]根据本发明的一个方面,提供了一种Hadoop数据文件的解析方法。该Hadoop数据文件的解析方法包括:
[0014]SI,通过mapreduce程序获取Hadoop数据文件的每行数据;
[0015]S2,将每行数据封装到一个实体对象中;
[0016]S3,通过函数获取实体对象中封装的每列数据。
[0017](三)有益效果
[0018]从上述技术方案可以看出,本发明Hadoop数据文件的生成与解析方法中,在数据行中增加了对应数据类型的标签数据,并针对不同的数据类型,在mapreduce配置信息中指定其列信息,通过提供实体对象Tag属性即可获知此数据类型并根据列名获取数据,从而具有以下有益效果:
[0019](I)编程人员可以根据该标签数据和列名信息进行编程,而不用直接设置数组下标,提高了程序开发效率和程序代码的可读性;
[0020](2)处理相关数据行时,通过标签数据识别数据行的类型,从而可在一个mapreduce程序中处理多种数据,提高了 mapreduce程序对多数据源输入的支持。
【附图说明】
[0021]图1为根据本发明实施例Hadoop数据文件的生成方法的流程图;
[0022]图2为根据本发明实施例Hadoop数据文件的解析方法的流程图;
【具体实施方式】
[0023]本发明提供一种Hadoop数据文件的生成方法,应用程序在输出一行Hadoop数据对象时,根据Hadoop数据对象的类型,在Hadoop数据对象中添加一列标签数据,根据一个或多个Hadoop数据对象,生成一个Hadoop数据文件。此Hadoop数据文件提高了数据的可识别性,进而提高程序开发效率和程序代码的可读性,同时提高mapreduce程序对多数据源输入的支持。
[0024]本发明还提供一种Hadoop数据文件的解析方法,通过mapreduce程序获取Hadoop数据文件的每列数据,并封装到一个实体对象中,得到多个实体对象,通过函数获取实体对象中封装的每列数据。
[0025]在一种实施方式中,在mapreduce程序的配置信息中,指定每种数据类型对应的列信息,其中,列信息包括一列或多列数据的列顺序和每列数据的列名信息;根据列信息,获取Hadoop数据文件的每列数据。
[0026]在一种实施方式中,实体对象包括一个Map对象及一个Tag属性,其中,将每列数据分别封装到一个实体对象中包括:将标签数据赋予Tag属性,将其他列的数据及其对应的列名信息写入到Map对象。
[0027]在一种实施方式中,根据实体对象的Tag属性,获取Hadoop数据文件的数据类型,根据Hadoop数据文件的数据类型,将与该数据类型对应的列名信息输入至函数中,获取列名信息对应的数据。
[0028]为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
[0029]在本发明的一个实例中,提供了一种Hadoop数据文件的生成方法。图1为根据本发明实施例Hadoop数据文件生成方法的流程图,如图1所示,方法包括:
[0030]步骤1,应用程序在生成数据文件时,读取数据文件中的每行Hadoop数据,识别出每行Hadoop数据的数据类型,其中,每行Hadoop数据包含有一列或多列数据;
[0031]步骤2,根据每行Hadoop数据的数据类型,在每行Hadoop数据中添加一列标签数据,以对应生成一个Hadoop
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1