hadoop映射器读取多行

时间:2013-02-03 03:42:16

标签: java input hadoop mapper

hadoop新手 - 我试图以块的形式读取我的HDFS文件,例如 - 一次100行,然后使用映射器中的apache OLSMultipleLinearRegression运行数据回归。 我使用此处显示的代码以多行显示:http://bigdatacircus.com/2012/08/01/wordcount-with-custom-record-reader-of-textinputformat/

我的映射器定义为:

public void map(LongWritable key, Text value,Context context) throws java.io.IOException ,InterruptedException
{
    String lines = value.toString();
    String []lineArr = lines.split("\n");
    int lcount = lineArr.length;
    System.out.println(lcount); // prints out "1"
    context.write(new Text(new Integer(lcount).toString()),new IntWritable(1));
}

我的问题是:来自system.out.println的lcount == 1怎么样?我的文件由“\ n”分隔,我在记录阅读器中设置了NLINESTOPROCESS = 3。 我的输入文件格式为:

y x1 x2 x3 x4 x5
y x1 x2 x3 x4 x5
y x1 x2 x3 x4 x5
...

如果我一次只读一行,我无法执行多重回归,因为回归API会占用多个数据点...感谢您的帮助

1 个答案:

答案 0 :(得分:0)

String.split()将正则表达式作为参数。你必须双重逃脱。

String []lineArr = lines.split("\\n");