本机开发mapreduce,然后打包上传到hadoop服务器

一、入门wordcount

1、新建maven项目,pom.xml内容:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.luo

wordcount

1.0-SNAPSHOT

jar

wordcount

http://maven.apche.org

UTF-8

commons-beanutils

commons-beanutils

1.9.3

org.apache.hadoop

hadoop-common

2.7.7

org.apache.hadoop

hadoop-hdfs

2.7.7

org.apache.hadoop

hadoop-mapreduce-client-common

2.7.7

org.apache.hadoop

hadoop-mapreduce-client-core

2.7.7

junit

junit

3.8.1

然后创建源码目录:src/main/java

2、编写mapper程序:src/main/java/WordCountMapper

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.LongWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

public class WordCountMapper extends Mapper {

@Override

protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {

//得到输入的每一行数据

String line = value.toString();

//通过空格分隔

String[] words = line.split(" ");

//循环遍历输出

for(String word:words){

context.write(new Text(word),new IntWritable(1));

}

}

}

mapreduce程序,因为需要传输数据,所以数据必须是可序列化的,Hadoop定义了自己的可序列化类型,例如Long类型在hadoop中的可序列化为LongWritable,String对应Text,int对应IntWritable。

mapreduce框架每读到一行数据,就会调用一次这里定义的map方法,map方法接收一个key-value对,继承的Mapper分别是输入key类型,输入value类型,输出key类型,输出value类型。输入的key默认是mapreduce读到一行文本的起始偏移量,value默认是一行的数据内容。

输出的key-value是用户自己定义的。

3、编写reduce程序:src/main/java/WordCountReducer

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;

public class WordCountReducer extends Reducer {

@Override

protected void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException {

Integer count = 0;

for (IntWritable value:values){

count+=value.get();

}

context.write(key, new IntWritable(count));

}

}

reduce方法继承的Reducer,分别为输入key类型,输入value类型,输出key类型,输出value类型,但是reduce方法接收的value是一个可迭代的数据集,因为reduce任务读取到的map任务处理结果例如是(good,1)(good,1)(good,1)当传给reduce方法时,会经过一个排序和合并的过程,合并完会变成,key:good,value:(1,1,1)

4、编写主程序:src/main/java/WordCountMapReduce

import org.apache.hadoop.conf.Configuration;

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.lib.input.FileInputFormat;

import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import java.io.IOException;

public class WordCountMapReduce {

public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {

//创建配置对象

Configuration conf = new Configuration();

//创建job

Job job = Job.getInstance(conf, "wordcount");

//设置运行的job类

job.setJarByClass(WordCountMapReduce.class);

//设置mapper类

job.setMapperClass(WordCountMapper.class);

//设置reduce类

job.setReducerClass(WordCountReducer.class);

//设置map输出的key,value

job.setMapOutputKeyClass(Text.class);

job.setOutputValueClass(IntWritable.class);

//设置reduce输出的key,value

job.setOutputKeyClass(Text.class);

job.setOutputValueClass(IntWritable.class);

//设置输入输出的路径

FileInputFormat.setInputPaths(job, new Path(args[0]));

FileOutputFormat.setOutputPath(job, new Path(args[1]));

//提交job

boolean b = job.waitForCompletion(true);

if(!b){

System.out.println("wordcount task fail!");

}

}

}

然后打包上传运行一下,成功~

java mapreduce示例,hadoop入门-MapReduce实例(一)相关推荐

  1. hadoop和python的关系_Python 的 map 和 reduce 和 Hadoop 的 MapReduce 有什么关系?

    先说结论.Python 的 map 和 reduce 是Python的内置函数,而 Hadoop 的 MapReduce 是一个计算框架. 两者之间没有直接的关系.但是他们的部分计算操作思想是类似的. ...

  2. 学习笔记Hadoop(十四)—— MapReduce开发入门(2)—— MapReduce API介绍、MapReduce实例

    四.MapReduce API介绍 一般MapReduce都是由Mapper, Reducer 及main 函数组成. Mapper程序一般完成键值对映射操作; Reducer 程序一般完成键值对聚合 ...

  3. Hadoop编写MapReduce之入门案例WordCount(自带+编写java)

    目录标题 Hadoop自带案例WordCount运行 MapReduce可以很好地应用于各种计算问题 网页查看 集群上jar包的位置 程序的介绍 自己编写WordCount的project(MapRe ...

  4. Hadoop教程(三):HDFS、MapReduce、程序入门实践

    Hadoop 附带了一个名为 HDFS(Hadoop分布式文件系统)的分布式文件系统,基于 Hadoop 的应用程序使用 HDFS .HDFS 是专为存储超大数据文件,运行在集群的商品硬件上.它是容错 ...

  5. Hadoop MapReduce编程 API入门系列之join(二十六)

    天气记录数据库 气象站数据库 气象站和天气记录合并之后的示意图如下所示. 011990-99999 SIHCCAJAVRI 195005150700 0 011990-99999 SIHCCAJAVR ...

  6. java多个mapreduce_一个简单的MapReduce示例(多个MapReduce任务处理)

    一.需求 有一个列表,只有两列:id.pro,记录了id与pro的对应关系,但是在同一个id下,pro有可能是重复的. 现在需要写一个程序,统计一下每个id下有多少个不重复的pro. 为了写一个完整的 ...

  7. Hadoop之MapReduce入门

    Hadoop之MapReduce概述 目录 MapReduce定义 MapReduce优缺点 MapReduce核心思想 MapReduce进程 MapReduce编程规范 MapReduce案例实操 ...

  8. Hadoop入门(二十三)Mapreduce的求数量最大程序

    一.简介 在文件中统计出现最多个数的单词,将其输出到hdfs文件上. 二.例子 (1)实例描述 给出三个文件,每个文件中都若干个单词以空白符分隔,需要统计出现最多的单词 样例输入:           ...

  9. Hadoop入门(十八)Mapreduce的倒排索引程序

    一.简介 "倒排索引"是文档检索系统中最常用的数据结构,被广泛地应用于全文搜索引擎.它主要是用来存储某个单词(或词组)在一个文档或一组文档中的存储位置的映射,即提供了一种根据内容来 ...

最新文章

  1. Redis cluster
  2. python怎么实现输入多行文字_介绍一个Python 包,几行代码可实现 OCR 文本识别!...
  3. StrUtils 单元下的公用函数目录
  4. leetcode152. 乘积最大子数组
  5. 斐波那契数列 (C#)
  6. Python程序设计语言基础02:Python基本图形绘制
  7. idea快速生成SpringBoot项目无法启动问题
  8. xdebug常用配置
  9. 服务器虚拟软件哪个好,服务器虚拟化哪一款软件是最佳选择?
  10. Acrel 2000E/G配电室综合监控系统
  11. linux下通过ping命令监控网络抖动脚本
  12. vue提示音_VueJS 实现管理后台新订单的语音提醒
  13. android 长按保存图片,安卓机上base64图片无法在微信中长按保存?
  14. java读取加密excel_Java 加密和解密Excel文档
  15. 谷歌插件学习必备准备知识代码提示插件调试
  16. Microsoft Office Professional Plus 2013全套
  17. elf文件从原理到实现个人总结
  18. android手机 无电池开机,手机无法开机的6种解决方法
  19. Socket异步服务器,可以监控客户端的状态,功能有,文字测试,服务端向客户端传输屏幕录像(UDP传输)、监控客户端屏幕(UDP传输),抖动用户窗体、发送文件给用户、扫描客户的C盘目录。
  20. 【转】用IDCNN和CRF做端到端的中文实体识别

热门文章

  1. 一张图30分钟带你入门python-大数据时代来了!神级程序员一张图帮你梳理Python脉络,快速入门...
  2. python代码翻译器-用python实现百度翻译的示例代码
  3. python能做什么工作-会python语言能做什么工作
  4. 零基础学python知乎-零基础人员可以学习python吗?|Python培训基础教程
  5. 自学python能干什么-普通人学Python能干什么?老男孩Python入门
  6. python用什么来写模块-用cython来写python的c模块
  7. python中类型转换的规则_Python 类型转换指南
  8. vue的介绍及基本使用(详细,好理解,示例代码)
  9. 前端JavaScript之DOM事件操作~都是干货
  10. c#中空数组_C# 如何判断数组是否拥有空元素呢?