关于HDFS文件内容的Java拆分方法

时间:2013-11-20 12:06:29

标签: java file hadoop hdfs

我在HDFS中有一个制表符分隔的文本文件。尝试使用选项卡进行拆分时,文件中的第一列未存储。相同的代码在普通日食中起作用。但是在hadoop中运行时,第一列值将被忽略。

文件中的示例行:

002\tCK 00 - 01/02/2012\t100000\t0.02\t330\t3863\t3863 FOOD 

代码片段:

String subvalues[] = value.split("\t");
v1= subvalues[5];
v2=subvalues[0];
v3=subvalues[1];

请帮助。

2 个答案:

答案 0 :(得分:0)

value.split("\t")将被制表符分割。但是,这一行也可能有空格。您可以尝试使用空格正则表达式来划分您的行:

String subvalues[] = value.split("\\s+");

为了您的更新 - 您可能需要逃避\tvalue.split("\\t")value.split("\\t|\\s+");

注意:通常\t用作数据的语义分隔符,因此您可能需要在按\t分割后解析列。

如果这没有帮助,您可以记录字符串的ascii值以查看字符的位置。

答案 1 :(得分:0)

感谢您的建议。问题解决了。问题是在mapper中运行时,标签分隔线正在处理中。默认情况下,第一个选项卡用于分隔mapper中的键和值。删除属性

job.setInputFormatClass(KeyValueTextInputFormat.class);

解决了这个问题。

由于