文档章节

Hadoop 2.5.1学习笔记5: mongo-hadoop connector的使用范例

强子1985
 强子1985
发布于 2014/11/13 12:35
字数 266
阅读 85
收藏 2

package com.dewmobile.task;

import java.io.IOException;
import java.util.Iterator;
import java.util.Random;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
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.Reducer.Context;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
import org.bson.BSONObject;

import com.mongodb.hadoop.MongoInputFormat;
import com.mongodb.hadoop.MongoOutputFormat;
import com.mongodb.hadoop.util.MongoConfigUtil;

public class ComputeProfile extends Configured implements Tool {

 @Override
 public int run(String[] arg0) throws Exception {
  // 1 initialized
  Configuration conf = getConf();
  // 2 input
  MongoConfigUtil.setInputURI(conf,
    "mongodb://192.168.56.66:27018/mongo-hadoop-test.apps");
  MongoConfigUtil.setOutputURI(conf,
    "mongodb://192.168.56.66:27018/mongo-hadoop-test.appsout");
  Job job = new Job(conf, "ComputeProfile");
  job.setJarByClass(ComputeProfile.class);

  // 3 execute
  job.setMapperClass(MapClass.class);
  job.setCombinerClass(Combiner.class);
  job.setReducerClass(Reduce.class);

  // 4 output
  job.setOutputKeyClass(Text.class);
  job.setOutputValueClass(IntWritable.class);

  // conf.set("mongo.output.uri","mongodb://localhost:27017/mongo-hadoop-test.appsout");
  job.setInputFormatClass(MongoInputFormat.class);
  job.setOutputFormatClass(MongoOutputFormat.class);

  // 5 run it now !!!
  System.exit(job.waitForCompletion(true) ? 0 : 1);
  return 0;
 }

 public static class MapClass extends
   Mapper<Object, BSONObject, Text, IntWritable> {
  public void map(Object key, BSONObject value, Context context)
    throws IOException, InterruptedException {

   if (null == key || value == null) {
    System.out
      .println("**************************************************");
    System.out.println("null pointer");
    System.out
      .println("**************************************************");
   }
   System.out.println("key---" + key + " value---" + value.toString());
   context.write(new Text("" + System.currentTimeMillis()), new IntWritable(1));
  }

 }

 public static class Combiner extends
   Reducer<Text, IntWritable, Text, IntWritable> {
  public void reduce(Text key, Iterable<IntWritable> values,
    Context context) throws IOException, InterruptedException {
   Iterator ite = values.iterator();
   if (ite.hasNext()) {
    context.write(key, (IntWritable) ite.next());    
   }

  }

 }

 public static class Reduce extends
   Reducer<Text, IntWritable, Text, IntWritable> {
  public void reduce(Text key, Iterable<IntWritable> values,
    Context context) throws IOException, InterruptedException {
   Iterator ite = values.iterator();
   if (ite.hasNext()) {
    IntWritable i = (IntWritable)ite.next();
    context.write(key, i);
    System.out.println("[output by reduce]---"+key+"  "+i);
   }
  }

 }

 public static void main(String[] args) throws Exception {
  int res = ToolRunner.run(new Configuration(), new ComputeProfile(),
    args);
  System.exit(res);
 }

}

© 著作权归作者所有

共有 人打赏支持
强子1985

强子1985

粉丝 862
博文 933
码字总数 645184
作品 8
南京
架构师
MongoDB Hadoop Connector

Hadoop擅长分析和处理大型数据集,而MongoDB擅长存储应用程序的大型数据集,这两者结合到一起,就诞生了Mongo-Hadoop——MongoDB主要负责存储和查询,Hadoop主要负责批处理。 Mongo-Hadoop可...

匿名
2012/04/11
5.5K
0
Hadoop学习笔记(二)设置单节点集群

本文描述如何设置一个单一节点的 Hadoop 安装,以便您可以快速执行简单的操作,使用 Hadoop MapReduce 和 Hadoop 分布式文件系统 (HDFS)。 参考官方文档:Hadoop MapReduce Next Generation ...

微wx笑
2014/10/07
0
0
mongo-hadoop ,mongo对接hadoop,有没有支持hadoop2.6,我看官网好像还没有支持

mongo-hadoop ,mongo对接hadoop,有没有支持hadoop2.6,我看官网好像还没有支持 官方推荐的版本,想问问大虾有没有试过hadoop2.6的?? Version Compatibility These are the minimum vers...

sca7
2016/04/05
77
1
[Hadoop][笔记]4个节点搭建Hadoop2.x HA测试集群

搭建Hadoop2.x HA 1.机器准备 虚拟机 4台 10.211.55.22 node1 10.211.55.23 node2 10.211.55.24 node3 10.211.55.25 node4 2.四台主机节点安排 node namenode datanode zk zkfc jn rm appli......

zemel
2016/08/22
37
0
大数据之Hadoop平台(二)Centos6.5(64bit)Hadoop2.5.1伪分布式安装记录,wordcount运行测试

注意:以下安装步骤在Centos6.5操作系统中进行,安装步骤同样适于其他操作系统,如有同学使用Ubuntu等其他Linux操作系统,只需注意个别命令略有不同。 注意一下不同用户权限的操作,比如关闭...

chaun
2015/04/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

活动招募 HUAWEI HiAI公开课·北京站-如何在4小时把你的APP变身AI应用

人工智能和机器学习是全球关注的新趋势,也是当前最火爆、最流行的话题。当你拿手机用语音助手帮你点外卖,智能推荐帮你把周边美食一网打尽;当你拿起P20拍照时,它将自动识别场景进行最美优...

华为终端开放实验室
8分钟前
0
0
匹配两位小数,js正则

var regex = /^\d*(\.[1-9]|\.\d[1-9])*$/ console.log(1.2,regex.test(1.2)); console.log(0.3,regex.test(0.3)); console.log(1.03,regex.test(1.03)); ......

微信小程序-暗潮
12分钟前
0
0
905. Sort Array By Parity - LeetCode

Question 905. Sort Array By Parity Solution 题目大意:数组排序,偶数放前,奇数在后,偶数的数之间不用管顺序,奇数的数之间也不用管顺序 思路:建两个list,一个放偶数,一个放奇数,最...

yysue
17分钟前
0
0
h5 禁止手机自带键盘弹出

html: <div style="width: 350px;margin:50px auto;"><input type="text" id="datePicker" class="date_picker form-control" placeholder="点击选择入住日期" /></div> js: $("#date......

Delete90
34分钟前
1
0
color透明度对照表

透明度百分比 数值 100% 不透明 FF 95% F2 90% E6 85% D9 80% CC 75% BF 70% B3 65% A6 60% 99 55% 8C 50% 80 45% 73 40% 66 35% 59 30% 4D 25% 40 20% 33 15% 26 10% 1A 5% 0D 0% 完全透明 ......

_无问西东
35分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部