解决就是全局缓存,没有设置为绝对路径private static String cache = "/matrix/step1_output/part-r-00000"
应该是规定读取的方式按行来的,加入按列来读取,那就可以按列来分片了
懒不死你
1 1_1,2_2,3_-2,4_0
2 1_3,2_3,3_4,4_-3
3 1_-2,2_0,3_2,4_3
4 1_5,2_3,3_-1,4_2
5 1_-4,2_2,3_0,4_2
main里面加这一行
BasicConfigurator.configure();
看输出日志
出现了java.io.FileNotFoundException: matrix2 的错误
修改mapper2
@Override
protected void setup(Context context) throws IOException, InterruptedException {
super.setup(context);
//通过输入流将全局缓存变量中的 右侧矩阵 读入List<String>中
Configuration conf = context.getConfiguration();
FileSystem fs = FileSystem.get(conf);
FSDataInputStream in = fs.open(new Path("/matrix/step1_output/part-r-00000"));
//FileReader fr = new FileReader(itermOccurrenceMatrix);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
//每一行的格式是: 行 tab 列_值,列_值,列_值,列_值
String line = null;
while((line = br.readLine())!=null) {
cacheList.add(line);
}
in.close();
br.close();
}
请问你问题解决了吗,我也是存在这样的问题
首先看一下eclipse的连接1.参数设置
博客有很多
reduce不执行(个人观点) :1,主方法中job 设置的reduce类对不对 , 2,<1>中正确再在确认map输出格式与reduce输入格式是否一致,最后reduce加日志打印看走到哪步(setup,reduce, clearup),再按报错信息分析。希望有 帮助
建议用三台虚拟机搭建环境
对 这个当时被我忽略了,应该再排序一次会更好,谢谢你提出的建议哈
看看文件的权限是否有问题,和你登录的角色权限?