91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

學習日志---partitioner和采樣器

發布時間:2020-07-07 15:25:20 來源:網絡 閱讀:425 作者:wukong0716 欄目:大數據

Mapreduce中:

shuffle階段是在map和reduce之間,可以自定義排序,自定義分區和自定義分組!


Mapreduce中,map出的數據是鍵值對,默認的是hashPatitionner來對map出的數據進行分區;

分區的方法還有其他幾個:

RandomSampler<Text, Text> sampler = 
                     new InputSampler.RandomSampler<Text, Text>(0.5, 3000, 10);
IntervalSampler<Text, Text> sampler2 = 
                    new InputSampler.IntervalSampler<Text, Text>(0.333, 10);
SplitSampler<Text, Text> sampler3 = 
                    new InputSampler.SplitSampler<Text, Text>(reduceNumber);

實現和細節

public class TotalSortMR { 
      
    @SuppressWarnings("deprecation")
    public static int runTotalSortJob(String[] args) throws Exception {  
        Path inputPath = new Path(args[0]);  
        Path outputPath = new Path(args[1]);  
        Path partitionFile = new Path(args[2]);  
        int reduceNumber = Integer.parseInt(args[3]);  
          

        //三種采樣器
        RandomSampler<Text, Text> sampler = new InputSampler.RandomSampler<Text, Text>(1, 3000, 10);
        IntervalSampler<Text, Text> sampler2 = new InputSampler.IntervalSampler<Text, Text>(0.333, 10);
        SplitSampler<Text, Text> sampler3 = new InputSampler.SplitSampler<Text, Text>(reduceNumber);
        
        //任務初始化
        Configuration conf = new Configuration();  
        Job job = Job.getInstance(conf);
        
        job.setJobName("Total-Sort");  
        job.setJarByClass(TotalSortMR.class);  
        job.setInputFormatClass(KeyValueTextInputFormat.class);  
        job.setMapOutputKeyClass(Text.class);  
        job.setMapOutputValueClass(Text.class);  
        job.setNumReduceTasks(reduceNumber);  

        //設置所有的分區類
        job.setPartitionerClass(TotalOrderPartitioner.class);  
        //分區類參考的分區文件
        TotalOrderPartitioner.setPartitionFile(conf, partitionFile);  
        //分區使用哪種采樣器
        InputSampler.writePartitionFile(job, sampler); 
        
        //job的輸入和輸出路徑
        FileInputFormat.setInputPaths(job, inputPath);  
        FileOutputFormat.setOutputPath(job, outputPath);  
        outputPath.getFileSystem(conf).delete(outputPath, true);  
          
        return job.waitForCompletion(true)? 0 : 1;
    }  
      
    public static void main(String[] args) throws Exception{  
        System.exit(runTotalSortJob(args));  
    }
}

job默認的輸入格式是TextInputFormat,這個是key-value的形式,key是每行的行標,value是每行的內容。可以更改

job.setInputFormatClass(,....)

一般要設置mapper的輸出格式,以備后面使用。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

马山县| 山阳县| 巴楚县| 贡觉县| 金山区| 楚雄市| 益阳市| 喀喇沁旗| 精河县| 文昌市| 盐城市| 吴旗县| 内黄县| 酉阳| 高唐县| 永和县| 新化县| 渝中区| 双城市| 宜川县| 卓尼县| 宁蒗| 拜泉县| 大丰市| 海阳市| 台前县| 新邵县| 吉安县| 弋阳县| 淮南市| 红桥区| 岑巩县| 苍山县| 疏勒县| 云浮市| 新丰县| 苏尼特右旗| 获嘉县| 云林县| 青冈县| 独山县|