CN105094828B - Hadoop数据文件的生成方法与解析方法 - Google Patents
Hadoop数据文件的生成方法与解析方法 Download PDFInfo
- Publication number
- CN105094828B CN105094828B CN201510450976.3A CN201510450976A CN105094828B CN 105094828 B CN105094828 B CN 105094828B CN 201510450976 A CN201510450976 A CN 201510450976A CN 105094828 B CN105094828 B CN 105094828B
- Authority
- CN
- China
- Prior art keywords
- data
- hadoop
- row
- information
- column
- 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
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种Hadoop数据文件的生成方法及解析方法,Hadoop数据文件的生成方法包括:应用程序在输出一行Hadoop数据对象时,根据Hadoop数据对象的类型,在Hadoop数据对象中添加一列标签数据;根据一个或多个Hadoop数据对象,生成一个Hadoop数据文件。此Hadoop数据文件提高了数据的可识别性,进而提高程序开发效率和程序代码的可读性,同时提高mapreduce程序对多数据源输入的支持。
Description
技术领域
本发明涉及信息技术行业数据库技术领域,尤其涉及一种Hadoop数据文件的生成方法与解析方法。
背景技术
在当今大数据背景下,产生了多种各样的大数据处理工具,Apache Hadoop就是其中之一。它是一个Apache基金会的顶级开源项目,已被广泛应用于需要处理大数据的项目和系统中。
HadoopMapreduce是Hadoop处理数据的框架模型,其通过mapreduce编程,读取海量数据,并将每条数据中具有相同键值的数据进行归类处理。在mapreduce编程时需要指定两个重要参数:一为mapred.input.dir,用于指定数据源文件的地址;二为mapreduce.inputformat.class,用于解析数据文件中的每条数据记录。
Hadoopmapreduce在处理数据时,会将输入数据文件中的数据按行进行读取,并将这行数据输入至mapreduce程序处理,mapreduce程序根据一行数据和指定的列分割符,将这一行的数据解析成一个字符串数组,通过数组下标来获取指定数据,如行数据为:a|b|c,列分割符为“|”,则行数据在被解析后即为一个数组,如:Str[2]{“a”,”b”,”c”},其取值方式为第一列为Str[0]的值a,第二列为Str[1]的值b,第三列为Str[2]的值c
由于需要在mapreduce计算时把输入的每行数据解析成数组,并需要指定数组下标来获取对应数据,这样就容易导致开发人员在编码时需要了解这行数据的列偏移量及其实际含义,这容易导致设置错误数组下标,读取错位数据,导致程序错误,程序开发效率降低,同时造成程序代码晦涩难懂。
同时,当输入文件中包含多种数据类型,即存在列数不同的异构数据或列数相同但数据类型不同的数据时,如数据类型A的行值为a|b|c,数据类型B的行值a|b|c|d|e,或两种数据A、B的行值均表现为a|b|c,但实际业务含义不同。由于无法通过解析后的数组长度唯一识别其数据类型,导致mapreduce程序对多数据源输入的支持较弱。
发明内容
(一)要解决的技术问题
鉴于上述技术问题,本发明提供了一种Hadoop数据文件的生成方法与解析方法,以提高数据的可识别性,进而提高程序开发效率和程序代码的可读性,同时提高mapreduce程序对多数据源输入的支持。
(二)技术方案
根据本发明的一个方面,提供了一种Hadoop数据文件的生成方法。该Hadoop数据文件的生成方法包括:
步骤1,应用程序在输出Hadoop数据对象时,根据Hadoop数据对象的类型,在Hadoop数据对象中添加标签数据;
步骤2,根据一个或多个Hadoop数据对象,生成一个Hadoop数据文件,其中,每个Hadoop数据对象作为Hadoop数据文件的一行,并且标签数据为该行Hadoop数据对象中的一列。
根据本发明的一个方面,提供了一种Hadoop数据文件的解析方法。该Hadoop数据文件的解析方法包括:
S1,通过mapreduce程序获取Hadoop数据文件的每行数据;
S2,将每行数据封装到一个实体对象中;
S3,通过函数获取实体对象中封装的每列数据。
(三)有益效果
从上述技术方案可以看出,本发明Hadoop数据文件的生成与解析方法中,在数据行中增加了对应数据类型的标签数据,并针对不同的数据类型,在mapreduce配置信息中指定其列信息,通过提供实体对象Tag属性即可获知此数据类型并根据列名获取数据,从而具有以下有益效果:
(1)编程人员可以根据该标签数据和列名信息进行编程,而不用直接设置数组下标,提高了程序开发效率和程序代码的可读性;
(2)处理相关数据行时,通过标签数据识别数据行的类型,从而可在一个mapreduce程序中处理多种数据,提高了mapreduce程序对多数据源输入的支持。
附图说明
图1为根据本发明实施例Hadoop数据文件的生成方法的流程图;
图2为根据本发明实施例Hadoop数据文件的解析方法的流程图;
具体实施方式
本发明提供一种Hadoop数据文件的生成方法,应用程序在输出一行Hadoop数据对象时,根据Hadoop数据对象的类型,在Hadoop数据对象中添加一列标签数据,根据一个或多个Hadoop数据对象,生成一个Hadoop数据文件。此Hadoop数据文件提高了数据的可识别性,进而提高程序开发效率和程序代码的可读性,同时提高mapreduce程序对多数据源输入的支持。
本发明还提供一种Hadoop数据文件的解析方法,通过mapreduce程序获取Hadoop数据文件的每列数据,并封装到一个实体对象中,得到多个实体对象,通过函数获取实体对象中封装的每列数据。
在一种实施方式中,在mapreduce程序的配置信息中,指定每种数据类型对应的列信息,其中,列信息包括一列或多列数据的列顺序和每列数据的列名信息;根据列信息,获取Hadoop数据文件的每列数据。
在一种实施方式中,实体对象包括一个Map对象及一个Tag属性,其中,将每列数据分别封装到一个实体对象中包括:将标签数据赋予Tag属性,将其他列的数据及其对应的列名信息写入到Map对象。
在一种实施方式中,根据实体对象的Tag属性,获取Hadoop数据文件的数据类型,根据Hadoop数据文件的数据类型,将与该数据类型对应的列名信息输入至函数中,获取列名信息对应的数据。
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
在本发明的一个实例中,提供了一种Hadoop数据文件的生成方法。图1为根据本发明实施例Hadoop数据文件生成方法的流程图,如图1所示,方法包括:
步骤1,应用程序在生成数据文件时,读取数据文件中的每行Hadoop数据,识别出每行Hadoop数据的数据类型,其中,每行Hadoop数据包含有一列或多列数据;
步骤2,根据每行Hadoop数据的数据类型,在每行Hadoop数据中添加一列标签数据,以对应生成一个Hadoop数据文件。
在本实施例中,为了能识别被读取数据的数据类型,在生成Hadoop数据文件时,根据每行数据的数据类型,在每行数据中增加一列标签数据,标签数据唯一对应一种数据类型,例如:
(1)对于商品数据行:
商品数据行原本应为:100000|联想电脑|2000,表示商品的编号为“100000”,商品名称为“联想电脑”,价格为“2000”。
本实施例中的商品数据行为:ware|100000|联想电脑|2000,标签列的值ware表示该数据行的数据类型为商品数据,在该商品数据行中,商品的编号为“100000”,商品名称为“联想电脑”,价格为“2000”。
(2)对于供应商数据行:
供应商数据行原本应为:v0001|联想|中国北京,表示供应商编号为“v0001”,供应商名称为“联想”,供应商地址为“中国北京”;
本实施例中的供应商数据行为:vendor|v0001|联想|中国北京,标签列的值vendor表示该数据行的数据类型为供应商数据,表示供应商编号“v0001”,供应商名称为“联想”,供应商地址为“中国北京”。
业务系统生成一个或多个Hadoop数据文件后,即可将此类文件作为输入文件用于Hadoopmapreduce计算。
在本发明的另一个实例中,提供了一种Hadoop数据文件的解析方法。图2为根据本发明实施例Hadoop数据文件解析方法的流程图,如图2所示,方法包括:
S1,在mapreduce程序的配置信息中,指定输入文件为带标签数据的数据文件,指定每种数据类型对应的列信息,列信息包括一列或多列数据的列顺序和每列数据的列名信息,mapreduce程序根据列信息,获取Hadoop数据文件的每列数据。
在mapreduce的配置信息中,指明每种数据类型对应的列信息,包括:列顺序,列名信息等,例如:
(1)对于商品数据类型ware:
其列信息为:{商品编号,商品名称,商品价格}
其数据格式为:ware|wareId|wareName|warePrice
(2)对于供应商数据类型vendor:
其列信息为:{供应商编号,供应商名称,供应商地址}
其数据格式为:vendor|vendorId|vendorName|vendorAdd
S2,编写一个类MREntityTextInputFormat,它继承了Hadoop的Inputformat类,将解析逻辑设置为先读取每行数据的标签数据,再根据此标签数据自动匹配对应的列信息,自动将此行数据的每列数据的列名和数值写入到一个Map对象中,并封装入一个实体对象MREntity,并将标签数据赋予此对象的Tag属性。
S3,在进行mapreduce编程时,通过MREntity的Tag属性判断此对象封装的数据为何种数据,并根据此数据类型的列名信息获取对应的数据。如entity.get(“wareId”)可获取商品编号信息,entity.get(“wareName”)可获取商品名称信息。
综上所述,本发明Hadoop数据文件的生成与解析方法在数据行中增加了对应数据类型的标签数据,并针对不同的数据类型,在mapreduce配置信息中指定其列信息,通过提供实体对象Tag属性即可获知此数据类型并根据列名获取数据,从而提高了数据的可识别性,进而提高了程序开发效率和程序代码的可读性,同时提高了mapreduce程序对多数据源输入的支持。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种数据处理方法,其特征在于,所述方法包括解析Hadoop数据文件,所述解析Hadoop数据文件包括:
S1,通过mapreduce程序获取所述Hadoop数据文件的每行数据,其中:在所述mapreduce程序的配置信息中,指定输入文件为带标签数据的数据文件,所述标签数据唯一对应一种数据类型;在所述mapreduce程序的配置信息中,指定每种数据类型对应的列信息,所述列信息包括每列数据的列名信息;
S2,将每行数据分别封装到一个实体对象中,将所述标签数据赋予Tag属性;
S3,通过函数获取所述实体对象中封装的每列数据,其中,通过提供所述实体对象Tag属性来获知数据类型并根据所述列名信息获取数据。
2.根据权利要求1所述的方法,其特征在于,所述S1包括:
S11,在mapreduce程序的配置信息中,指定每种数据类型对应的列信息;
S12,根据所述列信息,获取所述Hadoop数据文件的每列数据。
3.根据权利要求2所述的方法,其特征在于,所述列信息包括一列或多列数据的列顺序和每列数据的列名信息。
4.根据权利要求3所述的方法,其特征在于,所述实体对象包括一个Map对象及一个Tag属性,其中,所述S2包括:
将标签数据赋予所述Tag属性,将其他列的数据及其对应的列名信息写入到Map对象。
5.根据权利要求4所述的方法,其特征在于,所述S3包括:
S31,根据所述实体对象的Tag属性,获取所述Hadoop数据文件的数据类型;
S32,根据所述Hadoop数据文件的数据类型,将与该数据类型对应的列名信息输入至所述函数中,获取所述列名信息对应的数据。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括生成Hadoop数据文件,所述生成Hadoop数据文件包括:
步骤1,应用程序在输出Hadoop数据对象时,根据所述Hadoop数据对象的类型,在所述Hadoop数据对象中添加标签数据;
步骤2,根据一个或多个Hadoop数据对象,生成一个Hadoop数据文件,其中,每个Hadoop数据对象作为Hadoop数据文件的一行,并且标签数据为该行Hadoop数据对象中的一列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510450976.3A CN105094828B (zh) | 2015-07-28 | 2015-07-28 | Hadoop数据文件的生成方法与解析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510450976.3A CN105094828B (zh) | 2015-07-28 | 2015-07-28 | Hadoop数据文件的生成方法与解析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105094828A CN105094828A (zh) | 2015-11-25 |
CN105094828B true CN105094828B (zh) | 2018-09-11 |
Family
ID=54575356
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510450976.3A Active CN105094828B (zh) | 2015-07-28 | 2015-07-28 | Hadoop数据文件的生成方法与解析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105094828B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799622A (zh) * | 2012-06-19 | 2012-11-28 | 北京大学 | 基于MapReduce扩展框架的分布式SQL查询方法 |
CN103207889A (zh) * | 2013-01-31 | 2013-07-17 | 重庆大学 | 一种基于Hadoop的海量人脸图像的检索方法 |
WO2013155752A1 (zh) * | 2012-04-18 | 2013-10-24 | 中国人民大学 | 面向数据库与Hadoop混合平台的OLAP查询处理方法 |
-
2015
- 2015-07-28 CN CN201510450976.3A patent/CN105094828B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013155752A1 (zh) * | 2012-04-18 | 2013-10-24 | 中国人民大学 | 面向数据库与Hadoop混合平台的OLAP查询处理方法 |
CN102799622A (zh) * | 2012-06-19 | 2012-11-28 | 北京大学 | 基于MapReduce扩展框架的分布式SQL查询方法 |
CN103207889A (zh) * | 2013-01-31 | 2013-07-17 | 重庆大学 | 一种基于Hadoop的海量人脸图像的检索方法 |
Non-Patent Citations (1)
Title |
---|
使用hadoop实现IP个数统计~并将结果写入数据库;xiaojimanman;《CSDN博客》;20141022;第1-8页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105094828A (zh) | 2015-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107480053B (zh) | 一种软件测试数据生成方法及装置 | |
US9418315B1 (en) | Systems, methods, and computer readable media for extracting data from portable document format (PDF) files | |
US10628403B2 (en) | Annotation system for extracting attributes from electronic data structures | |
CN105630843A (zh) | 网页变化监控方法及装置 | |
CN103428080A (zh) | 一种数据的解包及组包方法 | |
CN104657274B (zh) | 软件界面测试方法及装置 | |
CN104050161B (zh) | 应用和数据服务器的动态桥接 | |
CN105512265A (zh) | 一种通过图形展示数据的方法及装置 | |
CN103559184A (zh) | 表单页面的显示方法和装置 | |
CN104966223A (zh) | 一种订单信息管理系统 | |
CN105824647A (zh) | 一种表单页面生成方法和装置 | |
US20120151441A1 (en) | Efficient generation of executable file from program files when some of the program files expressly incorporate other program files | |
CN103761095A (zh) | 一种生成通用的升级文件头部数据信息的方法 | |
CN109815243B (zh) | 一种文档界面化修改时的结构化存储方法和装置 | |
CN103617122B (zh) | 一种源代码的比对方法 | |
CN105205676A (zh) | 二维码与可变信息构成的标签、溯源方法与溯源系统 | |
US10241899B2 (en) | Test input information search device and method | |
CN111444368B (zh) | 构建用户画像的方法、装置、计算机设备及存储介质 | |
CN105094828B (zh) | Hadoop数据文件的生成方法与解析方法 | |
CN108446753A (zh) | 商品二维码编码方法和系统 | |
WO2016178068A1 (en) | System and method for testing web pages | |
CN103885762B (zh) | 一种基于文件字典元素拼装的文件开发装置以及方法 | |
CN109582411A (zh) | 图形用户界面生成方法、装置、计算机设备及存储介质 | |
CN115409014A (zh) | 单据模板生成方法、装置、计算机设备和存储介质 | |
CN104978379A (zh) | 一种应用程序资料站的搭建方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |