我在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];
请帮助。
答案 0 :(得分:0)
value.split("\t")
将被制表符分割。但是,这一行也可能有空格。您可以尝试使用空格正则表达式来划分您的行:
String subvalues[] = value.split("\\s+");
为了您的更新 - 您可能需要逃避\t
:value.split("\\t")
或value.split("\\t|\\s+")
;
注意:通常\t
用作数据的语义分隔符,因此您可能需要在按\t
分割后解析列。
如果这没有帮助,您可以记录字符串的ascii值以查看字符的位置。
答案 1 :(得分:0)
感谢您的建议。问题解决了。问题是在mapper中运行时,标签分隔线正在处理中。默认情况下,第一个选项卡用于分隔mapper中的键和值。删除属性
job.setInputFormatClass(KeyValueTextInputFormat.class);
解决了这个问题。
由于