美文网首页
使用mapreduce去除某些数字

使用mapreduce去除某些数字

作者: tonyemail_st | 来源:发表于2017-10-20 15:14 被阅读0次

解答2017年10月大数据行赛一题

数据:data.txt里面有500W个1-1000的整数

[root@master ~]# head data.txt 
851,944,745,729,855,954,179,124,753
710,990,349,777,36,970,688,463,450
385,178,816,361,797,792,960,708,459
840,128,997,610,722,180,887,635,205
840,623,804,327,645,379,986,489,420
210,181,356,411,909,498,654,59,288
568,828,352,420,829,629,183,993,308
858,118,598,561,227,828,158,38,203
96,187,22,654,300,194,97,990,509
508,728,10,569,726,588,822,219,571

生成数据的方法

[root@master ~]# cat genNum.sh 
count=0
for k in $(seq 1 555556)
do
    for j in $(seq 1 8)
    do
        num=$(($RANDOM%1000+1))
        echo -e "$num,\c" >> ./data.txt
        count=$((count+1))
        if [ $count -eq 5000000 ]; then break; fi
    done
    if [ $count -eq 5000000 ]; then break; fi
    num=$(($RANDOM%1000+1))
    echo "$num" >> ./data.txt
    count=$((count+1))
done

要求:使用mapreduce程序去除data.txt中所有的以2开头的数字

WordMapper.java

package com.jsit;

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;
 
 
public class WordMapper extends Mapper<LongWritable,Text, Text, IntWritable> {
 
    @Override
    protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, IntWritable>.Context context)
            throws IOException, InterruptedException {
        String line = value.toString();
        String[] words = line.split(" ");
        for(String word : words) {
            context.write(new Text(word), new IntWritable(1));
        }
    }
     
}

Reducer.java

package com.jsit;

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.Reducer;
 
public class WordReducer extends Reducer<Text, IntWritable, Text, LongWritable> {
 
    @Override
    protected void reduce(Text key, Iterable<IntWritable> values,
            Reducer<Text, IntWritable, Text, LongWritable>.Context context) throws IOException, InterruptedException {
        long count = 0;
        for(IntWritable v : values) {
            count += v.get();
        }
        context.write(key, new LongWritable(count));
    }
}

Test.java

package com.jsit;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
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.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
 
 
public class Test {
    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
                         
        Job job = Job.getInstance(conf);
         
        job.setMapperClass(WordMapper.class);
        job.setReducerClass(WordReducer.class);
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(IntWritable.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(LongWritable.class);
         
        FileInputFormat.setInputPaths(job, "e:/temp/test.txt");
        FileOutputFormat.setOutputPath(job, new Path("e:/temp/out/"));
         
        job.waitForCompletion(true);
    }
}

相关文章

  • 使用mapreduce去除某些数字

    解答2017年10月大数据行赛一题 数据:data.txt里面有500W个1-1000的整数 生成数据的方法 要求...

  • Hive调优

    Fetch抓取(Hive可以避免进行MapReduce)Hive中对某些情况的查询可以不必使用MapReduce计...

  • HIVE 调优—— hive.fetch.task.conver

    Fetch 抓取是指,Hive 中对某些情况的查询可以不必使用 MapReduce 计算。 启用 MapReduc...

  • 企业级调优

    9.1 Fetch抓取(了解) Fetch抓取是指,Hive中对某些情况的查询可以不必使用MapReduce计算。...

  • Hive调优

    1、Fetch 抓取 Fetch 抓取是指,Hive 中对某些情况的查询可以不必使用 MapReduce 计算。例...

  • 常用正则

    输入数字 输入0~100数字 去除首尾空格 去除标签正则 去除右键复制

  • Hive调优

    10.hive调优 10.1 Fetch抓取 Hive中对某些情况的查询可以不必使用MapReduce计算。例如:...

  • Hive 企业级调优

    1 Fetch 抓取 Fectch 抓取是指对某些情况下的查询不必使用 MapReduce 计算 将 hive.f...

  • Hive如何优化可以提高运行效率

    ​ 一、Fetch抓取 Fetch抓取是指,Hive中对某些情况的查询可以不必使用MapReduce计算。例如:S...

  • Hive 系列 - 调优经验

    1 Fetch抓取 Fetch抓取是指,Hive中对某些情况的查询可以不必使用MapReduce计算。例如:SEL...

网友评论

      本文标题:使用mapreduce去除某些数字

      本文链接:https://www.haomeiwen.com/subject/bervuxtx.html