hadoop从wordCount开始
最近一段时间大数据很火,我有稍微有点java基础,自然选择了由java编写的hadoop框架,wordCount是hadoop中类似于java中helloWorld的存在,自然不能错过。
package hadoop.wordcount.com;
import java.io.IOException;
import java.util.StringTokenizer; 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.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; public class WordCount { /**
* Hadoop mapreduce中的map,用来把数据转化为map
* @author admin
*
*/
public static class TokenizerMapper
extends Mapper<Object, Text, Text, IntWritable>{ // IntWritable是hadoop中定义的类型,相当于java中的int,这行代码相当于 int one=1;
private final static IntWritable one = new IntWritable(1);
// Text是hadoop中定义的类型,相当于java中的String,这行代码相当于 String text="";
private Text word = new Text(); /**
* hadoop中继承Mapper需要实现map()方法
* key 转化为map时输入的key,类型与Mapper第一个参数一致
* value 转化为map时输入的value,类型与Mapper第二个参数一致
*/
public void map(Object key, Text value, Context context
) throws IOException, InterruptedException {
StringTokenizer itr = new StringTokenizer(value.toString());
// 遍历输入的value,并将它们写入上下文
while (itr.hasMoreTokens()) {
word.set(itr.nextToken());
context.write(word, one);
}
}
} /**
* hadoop mapreduce中的Reducer,对数据的具体操作写在这里面
* @author admin
*
*/
public static class IntSumReducer
extends Reducer<Text,IntWritable,Text,IntWritable> {
private IntWritable result = new IntWritable(); /**
* 在这里添加对数据的操作
* key为输入类型
* values为输出类型
*
*/
public void reduce(Text key, Iterable<IntWritable> values,
Context context
) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
}
result.set(sum);
context.write(key, result);
}
} public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();// 读取配置文件
Job job = Job.getInstance(conf, "word count");// 新建一个任务
job.setJarByClass(WordCount.class);// 主类
job.setMapperClass(TokenizerMapper.class);// mapper
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);// reducer
job.setOutputKeyClass(Text.class);// 输出结果的key类型
job.setOutputValueClass(IntWritable.class);// 输出结果的value类型
// 要读取的数据,此处内容根据你hadoop实际配置而定
FileInputFormat.addInputPath(job, new Path("hdfs://dtj007:9000/dtj007/djt.txt"));
// 要输出数据的路径,此处内容根据你hadoop实际配置而定
FileOutputFormat.setOutputPath(job, new Path("hdfs://dtj007:9000/dtj007/wordcount-out"));
System.exit(job.waitForCompletion(true) ? 0 : 1);// 提交任务
}
}
运行完毕以后可以在你linux配置的hadoop目录下使用:
bin/hadoop fs -text /你在wordCount中配置的输出路径/part-r-00000
命令进行查看
hadoop从wordCount开始的更多相关文章
- Hadoop中wordcount程序
一.测试过程中 输入命令: 首先需要在hadoop集群中添加文件 可以首先进行查看hadoop集群中文件目录 hadoop fs -ls / hadoop fs -ls -R / hadoop fs ...
- [Linux][Hadoop] 运行WordCount例子
紧接上篇,完成Hadoop的安装并跑起来之后,是该运行相关例子的时候了,而最简单最直接的例子就是HelloWorld式的WordCount例子. 参照博客进行运行:http://xiejiangl ...
- 伪分布式环境下命令行正确运行hadoop示例wordcount
首先确保hadoop已经正确安装.配置以及运行. 1. 首先将wordcount源代码从hadoop目录中拷贝出来. [root@cluster2 logs]# cp /usr/local/h ...
- 一个可以跑的Hadoop的WordCount程序
搭个新环境时总要折腾一下,于是干脆记下来. 程序: package com.my; import java.io.IOException; import java.util.Iterator; imp ...
- hadoop执行wordcount例子
1:下载hadoop.http://mirror.esocc.com/apache/hadoop/common/hadoop-1.2.1/hadoop-1.2.1.tar.gz 2:解压. tar - ...
- 【Hadoop】Hadoop mr wordcount基础
1.基本概念 2.Mapper package com.ares.hadoop.mr.wordcount; import java.io.IOException; import java.util.S ...
- Windows用Eclipse来开发hadoop的WordCount的helloworld
[学习笔记] 2.Win7用Eclipse来开发hadoop的WordCount的helloworld网上下载hadoop-eclipse-plugin-2.7.4.jar,将该jar包拷贝到Ecli ...
- 5行代码怎么实现Hadoop的WordCount?
初学编程的人,都知道hello world的含义,当你第一次从控制台里打印出了hello world,就意味着,你已经开始步入了编程的大千世界,这和第一个吃螃蟹的人的意义有点类似,虽然这样比喻并不恰当 ...
- hadoop:将WordCount打包成独立运行的jar包
hadoop示例中的WordCount程序,很多教程上都是推荐以下二种运行方式: 1.将生成的jar包,复制到hadoop集群中的节点,然后运行 $HADOOP_HOME/bin/hadoop xxx ...
- Eclipse上运行第一个Hadoop实例 - WordCount(单词统计程序)
需求 计算出文件中每个单词的频数.要求输出结果按照单词的字母顺序进行排序.每个单词和其频数占一行,单词和频数之间有间隔. 比如,输入两个文件,其一内容如下: hello world hello had ...
随机推荐
- 动态库连接器–动态库链接信息(Mach-O文件格式和程序从加载到执行过程)
section cmd 说明 举例 __text 主程序代码 __stubs 用于动态库链接的桩 __stub_helper 用于动态库链接的桩 __cstring 常亮字符串符号表描述信 ...
- ZBrush中Flatten展平笔刷介绍
本文我们来介绍ZBrush®中的Flatten展平笔刷,Flatten笔刷能增加粗糙的平面在模型表面,利用它能够制作出完全的平面. Flatten展平笔刷 Flatten(展平):Flatten笔刷可 ...
- Python-ORM实战
Date: 2019-06-03 Author: Sun 什么是ORM? ORM(object relational mapping), 就是对象关系映射,简单来说我们类似python这种面向对象 ...
- 边框的使用,border-radius,box-shadow,border-image
<html> <head> <meta charset="UTF-8"> <title></ ...
- adb屏幕截屏
import subprocess #执行结果使用管道输出,对于参数是字符串,需要指定shell=Trueprocess = subprocess.Popen('adb shell screencap ...
- You-Dont-Need-JQuery (你不需要JQuery)
看完这篇文章我才觉得真的要用JQuery ,因为实在是有些地方设计的使用太复杂了, document.querySelector() 和 Document.querySelectorAll 的确是很方 ...
- UVALive-8077 Brick Walls 找规律
题目链接:https://cn.vjudge.net/problem/UVALive-8077 题意 有一个用砖头磊起来的墙,现在又有一只蚂蚁,想沿着砖缝从起点跑到终点. 问最短路长度. 思路 找规律 ...
- xmllint命令
xmllint是一个很方便的处理及验证xml的工具,linux下只要安装libxml2就可以使用这个命令,下面整理一些常用功能 1. --format 此参数用于格式化xml,使其具有良好的可读性. ...
- js常用特效-幻灯片
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Tarjan缩点【模板】
#include <algorithm> #include <cstdio> #include <map> using namespace std; ); map& ...