文档章节

hadoop读写mongodemo

caolinsheng
 caolinsheng
发布于 2014/06/18 17:08
字数 230
阅读 41
收藏 0

MongoMapper.java

public class MongoMapper extends Mapper<Object,BSONObject, IntWritable, Text> {

 @Override
 protected void map(Object key, BSONObject value,
   org.apache.hadoop.mapreduce.Mapper.Context context)
   throws IOException, InterruptedException {
  
  double id=(Double)value.get("myid");
  String name=(String)value.get("name");
  
  context.write(new IntWritable((int)id),new Text(name));
 }
}

 

MongoReducer.java

public class MongoReducer extends Reducer<IntWritable,DoubleWritable, IntWritable, BSONWritable> {
 protected void reduce(IntWritable key, Iterable<DoubleWritable> values,
   org.apache.hadoop.mapreduce.Reducer.Context context)
   throws IOException, InterruptedException {

  BasicBSONObject output = new BasicBSONObject();
  int count=0;
        for (Iterator iterator = values.iterator(); iterator.hasNext();) {
   count++;
   
  }
        output.put("count", count);
        context.write( key, new BSONWritable( output ) );

 }
}

 

RunTool.java

class RunTool extends PluginUtil{
  
 public static void main(String[] args) throws Throwable{
     System.setProperty("HADOOP_USER_NAME","hadoop");
        
   final JobConf conf = new JobConf(); 
      // 定义MongoDB数据库的输入与输出表名,这里是调用本地的MongoDB,默认端口号为27017 
         MongoConfigUtil.setInputURI( conf, "mongodb://192.168.4.73/foo.person" ); 
         MongoConfigUtil.setOutputURI( conf, "mongodb://192.168.4.73/foo.out" ); 
         MongoConfigUtil.setAuthURI(conf, "mongodb://mongo:mongo@192.168.4.73/admin");
         System.out.println( "Conf: " + conf ); 
   
         conf.set("fs.default.name", "hdfs://hadoop1:9000");
     //  conf.set("hadoop.job.user", "hadoop");
       conf.set("mapred.job.tracker", "hadoop1:9001");
       conf.set("dfs.permissions","false");
       String jarName = runonhadoop().toString();
         conf.setJar(jarName);
 
         final Job job = new Job( conf , "mongohadoop" );   
         job.setMapperClass( MongoMapper.class );  
         job.setReducerClass( MongoReducer.class );  
    
      // 定义Mapper与Reduce的输出key/value的类型 
         job.setOutputKeyClass( IntWritable.class ); 
         job.setOutputValueClass( BSONWritable.class ); 
   
         job.setMapOutputKeyClass(IntWritable.class);
         job.setMapOutputValueClass(DoubleWritable.class);
   
      // 定义InputFormat与OutputFormat的类型 
         job.setInputFormatClass( MongoInputFormat.class ); 
         job.setOutputFormatClass( MongoOutputFormat.class );  
         System.exit( job.waitForCompletion( true ) ? 0 : 1 ); 
 }

}

© 著作权归作者所有

共有 人打赏支持
caolinsheng
粉丝 3
博文 9
码字总数 2532
作品 0
东城
express4.x Request对象获得参数方法

最近看完慕课网 “node.js 建站攻略”后, 对mongodb 操作有了进一步认识, 为了进一步巩固该数据库知识, 于是使用学到的知识搭建一个最简单的mongoDemo. 搭建完成后已放到Github分享, 详情...

90后爱国
2015/07/22
0
0
Hadoop默认支持集成OSS,作为Hadoop兼容的文件系统

背景 2017.12.13日Apache Hadoop3.0.0正式版本发布,默认支持阿里云OSS对象存储系统,作为Hadoop兼容的文件系统。 OSS是中国云计算厂商第一个也是目前唯一一个被Hadoop官方版本支持的云存储系...

阿里云云栖社区
2017/12/19
0
0
/tmp/hadoop-hadoop-namenode.pid: Permission denied

starting namenode, logging to /home/hadoop/hadoop-1.0.2/libexec/../logs/hadoop-hadoop-namenode-ubuntu118.out /home/hadoop/hadoop-1.0.2/bin/hadoop-daemon.sh: line 136: /tmp/hadoo......

闵开慧
2012/09/05
0
0
Difeye 1.1.5 版本发布 增加gearman读写分离调度作业

Difeye 1.1.5 版本---更新日期:2013-05-28 Difeye是一款超轻量级PHP框架,主要特点有: ◆数据库连接做自动主从读写分离配置,适合单机和分布式站点部署; ◆支持Smarty模板机制,可灵活配置...

mathcn123456
2013/05/28
306
0
hbase初识-01.docx

定义 Hbase是一个在hdfs上开发的面向列的分布式数据库。 HBase 是一个开源的非关系(NoSQL)的可伸缩性分布式数据库。它是面向列的,并适合于存储超大型松散数据。HBase适合于实时,随机对Big...

hiqj
2015/09/09
20
0

没有更多内容

加载失败,请刷新页面

加载更多

2018资本方向:重新发现社交

2018年可谓是资本寒冬,投资人方面认为今年投资主题较少,大量机构继续项目退出来筹措新一期基金,创业公司上市募资,好让投资人收回资金离场,在如此惨淡的背景下,社交领域的投资却有回暖趋...

ThinkSNS账号
14分钟前
1
0
day118-20181016-英语流利阅读-待学习

耶鲁毕业又如何?美国最高法院大法官被控性侵 雪梨 2018-10-16 1.今日导读 美国最高法院大法官布雷特·卡瓦诺(Brett Kavanaugh)被指涉及 1980 年代多件性侵案,包括克里斯汀·布莱希·福特...

飞鱼说编程
15分钟前
2
0
Android studio取消自动折叠代码

在这里面设置就行

lanyu96
16分钟前
1
0
Magento2后台忘记密码

Magento2后台忘记密码处理方式 第一种(Magento CLI 命令行创建新用户): php bin/magento admin:user:create --admin-user="newName" --admin-password="New-passwd" --admin-email="newN......

alt_tab_jj
17分钟前
1
0
Vue 引入Jquery jQueryRotate.2.2 制作转盘抽奖

原先用jquery做的,现在整合webpack+vue 其实只需要webpack就行了,只是为了方便打包。 1、关闭eslint 检测,如果开启,插件里面全是报错,麻烦的很。 webpack.base.conf.js const createLin...

大灰狼wow
18分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部