Hadoop 多输入和多输出研究(如何在Job History中获取相关信息)
来源:互联网 发布:手机淘宝卖家在哪登陆 编辑:程序博客网 时间:2024/06/11 14:47
Hadoop FileInputFormat多输入
使用FileInputFormat来指定多个输入.当我们使用
FileInputFormat.setInputPaths(JobConf conf, Path... inputPaths)FileInputFormat.addInputPaths(JobConf conf, String commaSeparatedPaths)
来设定有多个输入路径的时候,首先第一点,这多个输入路径都是使用的同一个Mapper来运行。然后配置参数中,key是”mapreduce.input.fileinputformat.inputdir”,不同的输入路径通过”,”来进行分割的多个路径。所以,这种情况下的多输入可以在Job History的已经完成的Job的配置文件里面,来查找”mapreduce.input.fileinputformat.inputdir”的标签对应的值,然后通过”,”来进行分割就可以找到输入。
通过程序代码的测试,下面是我通过FileInputFormat来设置多个输入路径在配置文件中的值。
程序中的部分代码:
FileInputFormat.setInputPaths(job,new Path("/tmp/data1.txt"),new Path("/tmp/data2.txt"),new Path("/tmp/data3.txt")); System.out.println(job.getConfiguration().get("mapreduce.input.fileinputformat.inputdir"));
因为是本地文件,所以是file开头,如果是hdfs文件,应该是hdfs开头。下面是输出的结果:
file:/tmp/data1.txt,file:/tmp/data2.txt,file:/tmp/data3.txt
Hadoop MultipleInputs 多输入
上面的那种情况是有很多的输入路径,但是他们都只能使用相同的Mapper来进行相应的逻辑上的处理。使用MultipleInputs可以为每个路径指定不同的InputFormat和Mapper类。
MultipleInputs.addInputPath(Job job, Path path,Class<? extends InputFormat> inputFormatClass)
我们如果在配置文件中进行获取该配置项的话,要使用mapreduce.input.multipleinputs.dir.formats来获取。下面是代码测试。这里是部分代码:
MultipleInputs.addInputPath(job,new Path("/tmp/data1.txt"), TextInputFormat.class,WordMapper.class); MultipleInputs.addInputPath(job,new Path("/tmp/data2.txt"), TextInputFormat.class,TestMapper.class); MultipleInputs.addInputPath(job,new Path("/tmp/data3.txt"), TextInputFormat.class,WordMapper.class); MultipleInputs.addInputPath(job,new Path("/tmp/data4.txt"), TextInputFormat.class,WordMapper.class); System.out.println(job.getConfiguration().get("mapreduce.input.multipleinputs.dir.formats"));
输出的结果:
/tmp/data1.txt;org.apache.hadoop.mapreduce.lib.input.TextInputFormat,/tmp/data2.txt;org.apache.hadoop.mapreduce.lib.input.TextInputFormat,/tmp/data3.txt;org.apache.hadoop.mapreduce.lib.input.TextInputFormat,/tmp/data4.txt;org.apache.hadoop.mapreduce.lib.input.TextInputFormat
Hadoop MultipleOutputFormat
有时候,我们使用Hadoop处理数据时,在Reduce阶段,我们可能想对每一个输出的key进行单独输出一个目录或文件,这样方便数据分析,比如根据某个时间段对日志文件进行时间段归类等等。这时候我们就可以使用MultipleOutputs类,来搞定这件事.
这里我在指定的输出目录下面,指定了三个文件,hello,world,game三个文件,把一个reducer中的数据,输出到了这三个文件中。
所以,可以通过mapreduce.output.fileoutputformat.outputdir在history server相应的xml中找到其对应的文件夹,进行文件的遍历。
- Hadoop 多输入和多输出研究(如何在Job History中获取相关信息)
- Hadoop 学习研究(八): 多Job任务和hadoop中的全局变量
- 在Qt控制台程序中如何实现输入和输出
- 输出学生信息(在Friend类中定义输出和输入)
- 在python中,获取用户输入信息
- hadoop获取job信息,maptask,reducetask获取信息,hadoop监控job执行状况(cdh4.2 )
- vc++调用exe时,如何获取exe的输出信息(输出显示在IDE的输出中)
- 运行hadoop程序,如何在map中获取输入数据的全路径(fullpath)
- Hadoop: MapReduce2多个job串行处理 复杂的MapReduce处理中,往往需要将复杂的处理过程,分解成多个简单的Job来执行,第1个Job的输出做为第2个Job的输入,相互之间有一
- 在被调用方法中如何获取调用方的相关信息
- hadoop输入和输出格式
- Hadoop 多个job
- 如何写安全的Java Web应用之输入校验(一):不要在输出中包含Debug信息
- 自己编写接口用于获取Hadoop Job conf 信息
- hadoop命令 -- job相关
- hadoop命令 -- job相关
- hadoop命令 -- job相关
- hadoop job相关命令
- 基础Android之Material Design
- 数据增强(2)
- 选择从现在开始
- Git详细教程
- Linux添加虚拟网卡的多种方法
- Hadoop 多输入和多输出研究(如何在Job History中获取相关信息)
- ndkLog日志打印说明
- 不同方式切换Fragment时,生命周期的回调的不同
- Hive中的数据倾斜
- ThreadLocal 内部实现、应用场景和内存泄漏
- servlet中获取XMLHttpRequest提交的FormData参数
- 数据结构---树的应用----二叉排序树(查找)
- jsp中给table增加删除、修改
- 智能巡逻兵