关闭

大数据 (十)Hadoop-第一次使用eclipse&java&hadoop分析简单数据

2531人阅读 评论(1) 收藏 举报
分类:

源码:http://download.csdn.net/detail/jintaohahahaha/9919467

一、打开eclipse

二、新建java项目mapreducer

三、项目下新建lib文件夹,导入hadoop相关jar,jar在源码中有

四、项目下建包,写如下三个类

1、WorldCountMapper.java

package com.zjt.mapreducer.data;

import java.io.IOException;

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 org.apache.hadoop.util.StringUtils;

/**
 * 执行统计单词数量的map程序
 * @author ZhangJintao
 * 		Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT>
 * 			KEYIN ----   输入数据的键
 * 			VALUEIN ----  输入数据的值
 * 			KEYOUT ---- 输出数据的键
 * 			VALUEOUT ----  输出数据的值
 */
public class WorldCounteMapper extends Mapper<LongWritable, Text, Text, IntWritable>{
	@Override
	/**
	 * 父类的map方法,循环调用
	 * 从split碎片段中每行调用一次
	 * 把该行所在下标为key,该行的值为value
	 * 【功能:将单词以map输出】
	 */
	protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, IntWritable>.Context context)
			throws IOException, InterruptedException {
		String[] words = StringUtils.split(value.toString(), ' ');
		for (String w : words) {
			context.write(new Text(w), new IntWritable(1));
		}
	}
}
2、WorldCountReducer.java

package com.zjt.mapreducer.data;

import java.io.IOException;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

public class WorldCountReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
	@Override
	/**
	 * 循环调用
	 * 洗牌完毕分好组后,每组调用一次
	 * 【功能:计算单词出现次数】
	 */
	protected void reduce(Text arg0, Iterable<IntWritable> arg1,
			Reducer<Text, IntWritable, Text, IntWritable>.Context arg2) throws IOException, InterruptedException {
		int sum = 0 ;
		for(IntWritable i : arg1){
			sum += i.get();
		}
		arg2.write(arg0, new IntWritable(sum));
	}
}
3、RunJob.java

package com.zjt.mapreducer.data;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
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;

/**
 * 执行方法
 * @author ZhangJintao
 */
public class RunJob {
	public static void main(String[] args) {
		Configuration config = new Configuration();
		try {
			FileSystem fs = FileSystem.get(config);
			
			Job job = Job.getInstance();
			//执行mapreducer任务
			job.setJarByClass(RunJob.class);
			job.setJobName("data");
			
			job.setMapperClass(WorldCounteMapper.class);
			job.setReducerClass(WorldCountReducer.class);
			
			job.setMapOutputKeyClass(Text.class);
			job.setMapOutputValueClass(IntWritable.class);
			
			FileInputFormat.addInputPath(job, new Path("/usr/input/"));
			Path outpath  = new Path("/usr/input/data");
			if (fs.exists(outpath)) {
				fs.delete(outpath, true);
			}
			FileOutputFormat.setOutputPath(job, outpath);
			
			boolean f = job.waitForCompletion(true);
			
			if (f) {
				System.out.println("JOB 执行成功");
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
五、打jar包

六、上传测试数据

       

        其中data.txt内容如下

hadoop hello world
hello hadoop
hbase zookeeper

六、运行程序

        将我们打的jar上传至任何一台节点主机,远程登录节点主机,进入jar包所在目录,执行如下命令

    hadoop jar wc.jar com.zjt.mapreducer.data.RunJob
        执行后,我们可以看到控制台会提示信息。

     

        我们进入网页http://192.168.1.201:8088/cluster/apps后点击 Applications可以看到下图所示

  
       执行完毕之后,在此进入eclipse

       

        刷新后会发现多了如下几个文件夹和文件

     

        通过结果文件可知,她帮我们统计出了data.txt中hadoop单词有两个、hbase有一个、hello有两个、world有一个、zookeeper有一个

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

基于大数据做文本分析

在对大数据的认识中,人们总结出它的4V特征,即容量大、多样性、生产速度快和价值密度低,为此产生出大量的技术和工具,推动大数据领域的发展。为了利用好大数据,如何有效的从其中提取有用特征,也是重要的一方面...
  • victory0508
  • victory0508
  • 2016-03-01 10:52
  • 2464

大数据在线分析处理和常用工具

1. Flume架构
  • MyArrow
  • MyArrow
  • 2016-04-05 16:24
  • 1759

如何用Python进行大数据挖掘和分析

互联网创业离不开数据,如果能自己做个数据爬虫,那岂不是一件很美好的事情吗?  其实自己做数据挖掘不是梦,学点Python的基本功能,5步就能让你成为一个爬虫高手!
  • linglong911224
  • linglong911224
  • 2017-06-14 14:45
  • 260

十道大数据的题与十个海量数据处理的方法

第一部分、十道海量数据处理面试题   1、海量日志数据,提取出某日访问百度次数最多的那个IP。   此题,在我之前的一篇文章算法里头有所提到,当时给出的方案是:IP的数目还是有限的,最多2...
  • hunannanhu
  • hunannanhu
  • 2014-11-16 11:30
  • 531

大数据下的用户行为分析

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和...
  • sdauzyh
  • sdauzyh
  • 2016-01-26 10:10
  • 2800

大数据安全分析:我们从日志中得到的(一)

转自:http://www.freebuf.com/articles/web/25613.html 简介 在一个嘈杂的环境中,怎样才能尽可能的发现异常?不外乎黑白名单。 黑名单,...
  • ASIA_kobe
  • ASIA_kobe
  • 2015-11-25 09:15
  • 1356

大数据与人工智能

转自:http://www.360doc.com/content/15/0424/09/20625606_465608494.shtml 技术不足导致移动互联网难以催生出更多的新应用和商业模式...
  • xuxiatian
  • xuxiatian
  • 2016-11-10 09:38
  • 14536

大数据离线处理和常用工具

1. 大数据离线处理特点    1) 数据量巨大且保存时间长;    2) 在大量数据上进行复杂的批量运算;    3) 数据在计算之前已经完全到位,不会发生变化;    4) 能够方便的查...
  • MyArrow
  • MyArrow
  • 2016-04-05 17:46
  • 5032

大数据分析与应用的8个场景

转载自:http://blog.csdn.net/dada9407/article/details/20914145 1、基于客户行为分析的产品推荐     产品推荐的一个重要方面是基于客户交易行...
  • u013524655
  • u013524655
  • 2014-11-18 23:29
  • 833

大数据的相关性和因果性

转自:https://yq.aliyun.com/articles/84608?utm_campaign=wenzhang&utm_medium=article&utm_source=QQ-qun&2...
  • qq_26525317
  • qq_26525317
  • 2017-05-31 19:33
  • 504
    个人资料
    • 访问:52246次
    • 积分:1284
    • 等级:
    • 排名:千里之外
    • 原创:74篇
    • 转载:14篇
    • 译文:2篇
    • 评论:1条