hdfs文件内容的java分割方法

bvk5enib  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(560)

我在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];

请帮忙。

nwnhqdif

nwnhqdif1#

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

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

为您的更新-可能是您需要逃离您的 \t : value.split("\\t") 或者 value.split("\\t|\\s+") ;
注:通常 \t 用作数据的语义分隔符,因此可能需要在按拆分后分析列 \t .
如果这样做没有帮助,您可以记录字符串的ascii值以查看其中的字符。

kmynzznz

kmynzznz2#

谢谢你的建议。问题解决了。该问题是在mapper中运行时出现的,在mapper中处理以制表符分隔的行。默认情况下,第一个选项卡用于分隔mapper中的键和值。删除属性

job.setInputFormatClass(KeyValueTextInputFormat.class);

解决了问题。
谢谢

相关问题