java如何读取hadoop顺序文件?
我有一个顺序文件,它是hadoop map reduce作业的输出。 在这个文件中,数据以键值对的形式写入,而值本身就是一个映射。 我想将该值作为贴图对象读取,以便进一步处理它
Configuration config = new Configuration();
Path path = new Path("D:\\OSP\\sample_data\\data\\part-00000");
SequenceFile.Reader reader = new SequenceFile.Reader(FileSystem.get(config), path, config);
WritableComparable key = (WritableComparable) reader.getKeyClass().newInstance();
Writable value = (Writable) reader.getValueClass().newInstance();
long position = reader.getPosition();
while(reader.next(key,value))
{
System.out.println("Key is: "+textKey +" value is: "+val+"\n");
}
程序的输出:Key是:[这是Key]值是:{abc=839177,xyz=548498,lmn=2,pqr=1}
这里我得到的值是字符串,但我希望它是map的对象
# 1 楼答案
检查API文档中的SequenceFile#next(Writable, Writable)
应替换为
使用SequenceFile.Reader#getValueClassName获取SequenceFile中的值类型。SequenceFile在文件头中具有键/值类型