您现在的位置: 爱51代码网 >> 范文 >> 文章正文
设计mapreduce计算所有酒店1公里范围内的地标
ormat;
 
public class ctrip001 {
    public static void main(String[] args) throws Exception {
        String In = "/tmp/hotel";
        String Out = "/tmp/hotel001";
 
        Configuration conf = new Configuration();
        conf.set("mapred.job.tracker", "m04.ct1.r01.hdp:9001");
        Job job = new Job(conf, "Hotel");
        job.setJarByClass(ctrip001.class);
        FileSystem fs = FileSystem.get(conf);
        fs.delete(new Path(Out), true);
 
        FileInputFormat.addInputPath(job, new Path(In));
        FileOutputFormat.setOutputPath(job, new Path(Out));
 
        job.setMapperClass(HotelMap.class);
        job.setMapOutputKeyClass(Hotel.class);
        job.setMapOutputValueClass(NullWritable.class);
 
        job.setReducerClass(HotelReducer.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(NullWritable.class);
 
        job.setNumReduceTasks(5); // 根据酒店地标数据的行数,增减reduce。为了保证速度,20多亿行数据差不多要500到1000个Reduce(根据不同机型改变配置)
        job.setGroupingComparatorClass(HotelGrouping.class);
        job.setPartitionerClass(HotelPartitioner.class);
        job.waitForCompletion(true);
    }
 
    public static class HotelMap extends Mapper<LongWritable, Text, Hotel, NullWritable> {
 
        public void map(LongWritable key, Text value, Context context) throws java.io.IOException, InterruptedException {
            Hotel hotel = new Hotel();
            hotel.setHotel(value);
            context.write(hotel, NullWritable.get()); // 酒店或地标
            if (hotel.getType() == 0) { // 为酒店冗余8个中心点
 
                hotel.setXYa(1, 0);
                context.write(hotel, NullWritable.get());
                hotel.setXYa(1, 1);
                context.write(hotel, NullWritable.get());
                hotel.setXYa(1, -1);
                context.write(hotel, NullWritable.get());
 
                hotel.setXYa(-1, 0);
                context.write(hotel, NullWritable.get());
                hotel.setXYa(-1, 1);
                context.write(hotel, NullWritable.get());
                hotel.setXYa(-1, -1);
                context.write(hotel, NullWritable.get());
 
                hotel.setXYa(0, 1);
                context.write(hotel, NullWritable.get());
                hotel.setXYa(0, -1);
                context.write(hotel, NullWritable.get());
 
            }
            return;
        }
    }
 
   

上一页  [1] [2] [3] [4] [5] [6] 下一页

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    Unable to write data to the tr
    asp.net中listbox的items.count属
    C#不是每次查询数据是不是被缓存
    ASP.NET发布后能加载引用的js文件
    Hadoop2.2.0在eclipse控制台没有
    maven如何加自定义的包
    redhat 2.6 (santigo 5.6) vsftp
    shell如何实现自动填写操作执行下
    linux shell 文件配置sh:color:
    shell script语法一定要加path吗
    Hadoop2.2.0在eclipse控制台没有
    maven如何加自定义的包
    redhat 2.6 (santigo 5.6) vsftp
    shell如何实现自动填写操作执行下
    linux shell 文件配置sh:color:
    shell script语法一定要加path吗
    SecureCRT如何访问虚拟机vmWare中
    C#如何读取WINDOWS的放大系数
    cximge的图如何存入数据库并提取
    DBGRID控件显示查询结果文本类型
    mahout训练出来的分类模型如
    安装cloudera cdh5.2.0后执行
    sqoop数据导出不完整
    hadoop distcp源集群如何识别
    Hadoop2.2.0在eclipse控制台
    windows客户端如何访问hdfs
    yarn.scheduler.fair.locali
    asp中的access年度成绩查询排
    access如何用SQL语句查询时间
    sqlserver数据库刚启动 客户
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |