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
...
如果一次只能读取1行,则无法执行多重回归,因为回归API会包含多个数据点...谢谢您的帮助
最佳答案
String.split()
以正则表达式作为参数。你必须加倍逃脱。
String []lineArr = lines.split("\\n");
关于java - hadoop映射器读取多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14669282/