评论管家系统
评论管家系统
海上明月共潮生 发表于8个月前
评论管家系统
  • 发表于 8个月前
  • 阅读 6
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

package com.movie.step;

import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map.Entry;

import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileSplit;

import com.movie.arith.SortHashMap;
/**
 * 
 * @author yourkkc
 *  filter  qu diao unuser yong de dianying
 */


public class ScoreFilter {

    //input collect
    public static class TheMapper extends Mapper<Object, Text, Text, Text>{
                private String path;
                private static final Text k = new Text();
                private static final Text v = new Text();
            @Override
            protected void map(Object key, Text value, Mapper<Object, Text, Text, Text>.Context context)
                    throws IOException, InterruptedException {
                
                FileSplit inputSplit = (FileSplit) context.getInputSplit();
                path = inputSplit.getPath().getParent().getName();
                String type  ="";
                if(path.equals("step4_Out")){//plus to  the result of matrix to multiply 
                    type ="W:";
                }else if(path.equals("step42_Out")){//src    
                    type ="S:";
                }
                Text k = new Text(key.toString());
                Text v =  new Text(type+value.toString());
                context.write(k,v);
            }
        
    }
    public static class TheReduce extends Reducer<Text,Text,Text,Text>{

        
        @Override
        protected void reduce(Text key, Iterable<Text> values,
                Reducer<Text, Text, Text, Text>.Context context) throws IOException, InterruptedException {
            
            
            HashMap<String,String> wMap = new HashMap<String,String>();
            HashMap<String,String> sMap = new HashMap<String,String>();
            for(Text value:values){
                String v = value.toString().substring(2);
                if (value.toString().startsWith("W:")) {//W
                    wMap.put(v.split(":")[0], v.split(":")[1]);
                }else if (value.toString().startsWith("S:")){//  S
                    sMap.put(v.split(":")[0], v.split(":")[1]);
                }
                
            }
            //过滤
            HashMap<String,Float> filterMap = new HashMap<String,Float>();
            Iterator<String> iter = wMap.keySet().iterator();
            while(iter.hasNext()){
                String k = iter.next();//item
                if(!sMap.containsKey(k))
                    filterMap.put(k, Float.valueOf(wMap.get(k)));
            }
            //排序
            List<Entry<String,Float>> list = new LinkedList<Entry<String,Float>>();
            list=SortHashMap.sortHashMap(filterMap);
            for(Entry<String,Float> l : list){
                Text k = new Text(key);
                Text v = new Text(l.getKey().toString() + "\t" + l.getValue().toString());
                context.write(k,v);
            }
        }
        
    }
    
}
 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 4
码字总数 1130
×
海上明月共潮生
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: