文档章节

KeyValueTextInputFormat

Zero零_度
 Zero零_度
发布于 2015/01/11 18:33
字数 178
阅读 171
收藏 0

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

package com.test;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.KeyValueLineRecordReader;
import org.apache.hadoop.mapreduce.lib.input.KeyValueTextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;

/**
 * hello jim
 * hello tim
 *
 * 最后输出
 * hello 1
 * jim 1
 * hello 1
 * tim 1
 */
public class WordCountKeyValue extends Configured implements Tool {
 
 public static class Map extends Mapper<Text, Text, Text, IntWritable> {
  /**
   * key hello
   * value jim
   */
  public void map(Text key, Text value, Context context) throws IOException, InterruptedException {
   context.write(key, new IntWritable(1));
   context.write(value, new IntWritable(1));
  }
 }
 
 public int run(String[] args) throws IOException, InterruptedException, ClassNotFoundException {
  Configuration conf = this.getConf();
  //指定KeyValueTextInputFormat分割符,默认分割符是\t
  //conf.set("mapreduce.input.keyvaluelinerecordreader.key.value.separator", "\t");
  conf.set(KeyValueLineRecordReader.KEY_VALUE_SEPERATOR, "\t");

  
  Job job = new Job(conf);
  job.setJobName(WordCountKeyValue.class.getSimpleName());
  job.setJarByClass(WordCountKeyValue.class);
  
  FileInputFormat.addInputPath(job, new Path(args[0]));
  FileOutputFormat.setOutputPath(job, new Path(args[1]));
  
  job.setNumReduceTasks(0);
  job.setMapperClass(Map.class);
  
  job.setInputFormatClass(KeyValueTextInputFormat.class);
  job.setOutputFormatClass(TextOutputFormat.class);
  
  job.setMapOutputKeyClass(Text.class);
  job.setMapOutputValueClass(IntWritable.class);
  job.waitForCompletion(true);
  return job.isSuccessful()?0:1;
 }
 
 public static void main(String[] args) throws Exception {
  int exit = ToolRunner.run(new WordCount(), args);
  System.exit(exit);
 }
 
}

© 著作权归作者所有

上一篇: NLineInputFormat
下一篇: DBInputFormat
Zero零_度
粉丝 70
博文 1325
码字总数 283013
作品 0
程序员
私信 提问
加载中

评论(0)

Hadoop_MapReduce工作原理

Hadoop_MapReduce工作原理 六个阶段: Input 文件输入 Splitting 分片 Mapping Shuffling Reducing Final result mapper的输入数据为KV对形式,每一个KV对都会调用map()方法,输出数据也是K...

BLUcoding
04/28
0
0
Hadoop实战读书笔记(7)

输入数据概要 输入数据通常驻留在较大的文件中,通常几十或者数百GB,甚至更大。MapReduce处理的基本原则之一是将输入数据分割成块。这些块可以在多台计算机上并行处理,在Hadoop的术语中这些...

祥林会跟你远走高飞
2014/12/08
141
0
InputFormat加载数据

InputFormat是一个抽象类,其定义如下: InputFormat会对数据进行两方面的处理: 对输入数据进行逻辑切分,形成一个个split 针对每个split,新建一个RecorReader读取split里面的数据,形成一...

Jason_typ
2018/06/13
29
0
Hadoop输入和输出的处理类(7)

hadoop输入的处理类 InputFormat InputFormat负责处理MR的输入部分。 作用: 1、验证作业的输入是否规范。 2、把输入文件切分成InputSplit。 3、提供RecordReader的实现类,把InputSplit读到...

肖鋭
2014/03/01
223
0
Hadoop(十):简单了解Hadoop数据类型,输入输出格式及用户如何自定义。

一:Hadoop内置的数据类型。 Hadoop提供如下内置的数据类型,这些数据类型都实现了WritableComparable接口,以便用这些类型定义的数据可以被序列化进行网络传输和文件存储,以及进行大小比较...

牧羊人Berg
2016/05/13
2.4K
0

没有更多内容

加载失败,请刷新页面

加载更多

PHP设计模式

设计模式 单例模式解决的是如何在整个项目中创建唯一对象实例的问题,工厂模式解决的是如何不通过new建立实例对象的方法。 单例模式 $_instance必须声明为静态的私有变量 构造函数和析构函数...

php开源社区
20分钟前
4
0
Android反编译(一) 之反编译JAVA源码

Android反编译(一) 之反编译JAVA源码 [目录] 1、工具 2、反编译步骤 3、实例 4、装X技巧 1、工具 1).dex反编译JAR工具 dex2jar http://code.google.com/p/dex2jar/downloads/list 2).JAVA反编...

osc_l8ylygdq
20分钟前
19
0
解决layer.open中访问地址携带参数过长导致的问题(Request-URI Too Long)

由于layer.open是get传参,而get传参有长度限制,当携带参数数据过多时就由于参数过多出错,试过换成post请求,但是由于原方法返回的是页面,使用post返回的只能是数据,通过返回的数据再lay...

郭周园
20分钟前
13
0
parted命令分区

[root@KING ~]# parted /dev/sdb1 =》进行分区 (parted) mklabel gpt =》通过mklabel调整分区表,调整为gpt类型 Warning: The existing disk label on /dev/sdb will be destroyed and all d......

osc_eijo4qvb
21分钟前
12
0
苹果mac电脑的移动硬盘无法挂载且硬盘灯一直闪烁,怎么办?

小编近日遇到一个诡异的问题,小编的移动硬盘不定期的会自动断开,提示未正常拔出,实际上一直没有动过连接线,然后硬盘一直处于未加载的状态,硬盘灯也一直闪烁不停。 通过重启的方法,有时...

mac小叮当
22分钟前
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部