Mryqu's Notes


  • 首页

  • 搜索
close

[Hadoop] 通过MultipleInputs处理多输入文件

时间: 2014-09-29   |   分类: BigData     |   阅读: 53 字 ~1分钟

一般MapReduce程序仅处理一个输入文件,但当我们必须处理多个输入文件时,普通MapReduce方法就无能为力了,这时候可以使用org.apache.hadoop.mapreduce.lib.input.MultipleInputs类搞定这一问题。

MultipleInputs示例

MultipleInputsDemo.java源码

[Hadoop] 通过MultipleInputs处理多输入文件

people.txt

1,Tomas,1
2,Edward,2
3,Henry,3
4,Gordon,4
5,James,4
6,Percy,3
7,Toby,2
8,Emily,1
9,Duke,3
10,Donald,3
11,Douglas,3

locations.txt

1,China
2,USA
3,Canada
4,New Zealand

执行

hadoop jar YquMapreduceDemo.jar MultipleInputsDemo /user/hadoop/mijoin/people.txt /user/hadoop/mijoin/locations.txt /user/hadoop/mijoin_output

测试结果

[Hadoop] 通过MultipleInputs处理多输入文件

MultipleInputs分析

与普通Driver的区别

普通Driver

|API|Job属性 |— |FileInputFormat.addInputPath|mapreduce.input.fileinputformat.inputdir
示例:/user/hadoop/wordcount/book.txt |Job.setMapperClass|mapreduce.job.map.class
示例:WordCount.TokenizerMapper |Job.setInputFormatClass|mapreduce.job.inputformat.class
示例:org.apache.hadoop.mapreduce.lib.input.TextInputFormat

使用MultipleInputs的Driver
APIJob属性
MultipleInputs.addInputPathmapreduce.input.multipleinputs.dir.formats
示例:/user/hadoop/mijoin/people.txt:o.a.h.m.l.i.TextInputFormat,
/user/hadoop/mijoin/locations.txt:o.a.h.m.l.i.TextInputFormat
mapreduce.input.multipleinputs.dir.mappers
示例:/user/hadoop/mijoin/people.txt:MultipleInputsDemo.PersonMapper,
/user/hadoop/mijoin/locations.txt:MultipleInputsDemo.LocationMapper
mapreduce.job.inputformat.class
示例:org.apache.hadoop.mapreduce.lib.input.DelegatingInputFormat
mapreduce.job.map.class
示例:org.apache.hadoop.mapreduce.lib.input.DelegatingMapper

由上可见,MultipleInputs方法不设置mapreduce.input.fileinputformat.inputdir属性,将mapreduce.job.inputformat.class和mapreduce.job.map.class属性设为多输入的委托类,增加了两个专用的属性mapreduce.input.multipleinputs.dir.formats和mapreduce.input.multipleinputs.dir.mappers已用于映射每一输入文件的格式和mapper类。

调用每个输入文件的FileFormat

[Hadoop] 通过MultipleInputs处理多输入文件

调用每个输入文件的Mapper

[Hadoop] 通过MultipleInputs处理多输入文件

示例流程

[Hadoop] 通过MultipleInputs处理多输入文件

标题:[Hadoop] 通过MultipleInputs处理多输入文件
作者:mryqu
声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!

#hadoop# #mapreduce# #multipleinputs# #源码分析# #示例#
[Hadoop] 通过MultipleOutputs生成多输出文件
使用微软的机器学习云Azure ML进行预测分析
  • 文章目录
  • 站点概览

Programmer & Architect

662 日志
27 分类
1472 标签
GitHub Twitter FB Page
    • MultipleInputs示例
    • MultipleInputs分析
© 2009 - 2023 Mryqu's Notes
Powered by - Hugo v0.120.4
Theme by - NexT
0%