<strong><span style="font-size:18px;">/***
* @author YangXin
* @info Mapper选择艺术家的整数特征ID然后建立单个特征的向量。这些一维的部分
* 向量会传给Reducer,后者会将这些向量简单地进行联结。生成一个完整的向量。 */
package unitTwelve; import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.DefaultStringifier;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.util.GenericsUtil;
import org.apache.mahout.math.NamedVector;
import org.apache.mahout.math.SequentialAccessSparseVector;
import org.apache.mahout.math.VectorWritable; public class VectorMapper extends Mapper<LongWritable, Text, Text, VectorWritable>{
private Pattern splitter;
private VectorWritable writer;
private Map<String, Integer> dictionary = new HashMap<String, Integer>(); @Override
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException{
String[] fields = splitter.split(value.toString());
if(fields.length < 4){
context.getCounter("Map", "LinesWithErrors").increment(1);
return;
}
String arrtist = fields[1];
String tag = fields[2];
double weight = Double.parseDouble(fields[3]);
NamedVector vector = new NamedVector(new SequentialAccessSparseVector(dictionary.size()), tag);
vector.set(dictionary.get(value), weight);
writer.set(vector);
context.write(new Text(tag), writer);
} @Override
protected void setup(Context context) throws IOException, InterruptedException{
super.setup(context);
Configuration conf = context.getConfiguration();
DefaultStringifier<Map<String, Integer>> mapStringifier = new DefaultStringifier<Map<String, Integer>>(conf, GenericsUtil.getClass(dictionary));
dictionary = mapStringifier.fromString(conf.get("dictionary"));
splitter = Pattern.compile("<sep>");
writer = new VectorWritable();
}
}
</span></strong>



最新文章

  1. textview 弹出键盘上面添加完成按钮,并设置输入内容的格式。
  2. (转)ElasticSearch学习
  3. 梳理javascript原型整体思路
  4. XAF响应式布局皮肤界面展示
  5. php mysql 中文乱码解决方法
  6. HDOJ1518Square 深搜
  7. c++ primer plus 习题答案(6)
  8. weblogic配置修改java代码后不需要重启热部署方式
  9. sql server 2012提示评估期已过的解决办法 附序列号
  10. Spring详解(五)------AOP
  11. 阿狸V任务页面爬取数据解析
  12. 在本机使用虚拟机安装一个linux系统,并搭建ftp服务器
  13. A1113. Integer Set Partition
  14. Git 和 Repo常用命令
  15. unity中实现三个Logo图片进行若隐若现的切换并有延时切换图片的效果
  16. Flask源码阅读-第一篇(flask包下的__main__.py)
  17. MapGIS10.3新功能
  18. (转)【Unity Shaders】Vertex Magic —— 访问顶点颜色
  19. C#的Lambda 表达式都使用 Lambda 运算符 =&gt;,该运算符读为“goes to”。语法如下:
  20. 一、用Delphi10.3模拟读取百度网页,并读取相关头部信息

热门文章

  1. pytorch 5 classification 分类
  2. [LeetCode] 350. 两个数组的交集 II intersection-of-two-arrays-ii(排序)
  3. WinServer-PowerShell基础
  4. 电子签章盖章之jQuery插件jquery.zsign
  5. Spoj 1557 Can you answer these queries II 线段树 随意区间最大子段和 不反复数字
  6. [LeetCOde][Java] Best Time to Buy and Sell Stock III
  7. UVALive 4192/HDU 2959 Close Enough Computations 数学
  8. C++ 虚函数的缺省參数问题
  9. rails数据库操作rake db一点心得
  10. Laravel-redis-订阅发布