求助!真心不会改····就是说我的格式不对!!!!求好心人帮忙·········

查看数: 6508 | 评论数: 4 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2016-4-21 13:36

正文摘要:

package org.apache.hadoop.examples; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configurat ...

回复

lanxueren121 发表于 2016-4-22 17:56:46
atsky123 发表于 2016-4-21 22:25
楼主对mapreduce理解还不太深,建议按照/t和空格来分。
mapreduce默认是对行分割的。所以楼主的按行是不 ...

谢谢~指点~我再研究下~确实认识不深····惭愧···
atsky123 发表于 2016-4-21 22:25:20
lanxueren121 发表于 2016-4-21 15:06
大神你画红的地方是错误的地方吗?/n是换行符,我想数据可以根据行分割···

我的数据是这样的

楼主对mapreduce理解还不太深,建议按照/t和空格来分。
mapreduce默认是对行分割的。所以楼主的按行是不对的
bioger_hit 发表于 2016-4-21 14:01:10
  protected void map(Object key, Text value, Context context)throws IOException, InterruptedException {
                        String total=value.toString();

                        StringTokenizer st = new StringTokenizer(total,"\n");

                        Num=Integer.valueOf(st.nextToken());

                        id = new int[Num];
                        x = new double[Num];
                        y = new double[Num];
                        z = new double[Num];

                        while(st.hasMoreTokens()){

                                StringTokenizer str = new StringTokenizer(st.nextToken());

                                countTokens = str.countTokens();
                                while(str.hasMoreTokens()){
                                        String line=str.nextToken();
                                        if (countTokens == 4) {        
                                                int ID=Integer.valueOf(line.trim());
                                                id= ID;
                                                double X=Double.valueOf(str.nextToken());
                                                x = X;
                                                double Y=Double.valueOf(str.nextToken());
                                                y = Y;
                                                double Z=Double.valueOf(str.nextToken());
                                                z = Z;


                                        }
                                }
                        }


                        for (int j=0;j<Num-1;j++){
                        for(int k=1;k<Num;k++){
                                        distance =(double) Math.sqrt((x[k]-x[j])*(x[k]-x[j])+(y[k]-y[j])*(y[k]-y[j])+(z[k]-z[j])*(z[k]-z[j]));


                                        if (distance<=1.8){
                                                angle=Math.abs(Math.atan((y[k]-y[j])/(x[k]-x[j])));
                                                IntWritable outID=new IntWritable(id[j]);
                                                outTuple.setantrID(id[k]);
                                                outTuple.settangent(angle);
                                                context.write(outID, outTuple);

                                        }

                                }

                        }
                }
        }
分隔符不对造成认为是字符串。
先弄清楚,输入文件中,每行的分隔符是什么??
\n,肯定是不对的。确认是空格,还是\t




关闭

推荐上一条 /2 下一条