我在hdfs中有一个制表符分隔的文本文件。尝试用tab拆分时,文件中的第一列未被存储。同样的代码在普通的eclipse中工作。但是在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条答案
按热度按时间nwnhqdif1#
value.split("\t")
将按制表符拆分。但是,这行中也可能有空格。您可以尝试使用空格正则表达式拆分行:为您的更新-可能是您需要逃离您的
\t
:value.split("\\t")
或者value.split("\\t|\\s+")
;注:通常
\t
用作数据的语义分隔符,因此可能需要在按拆分后分析列\t
.如果这样做没有帮助,您可以记录字符串的ascii值以查看其中的字符。
kmynzznz2#
谢谢你的建议。问题解决了。该问题是在mapper中运行时出现的,在mapper中处理以制表符分隔的行。默认情况下,第一个选项卡用于分隔mapper中的键和值。删除属性
解决了问题。
谢谢