如何从Hadoop中的HDFS文件中读取序列化对象

时间:2012-07-15 11:37:10

标签: hadoop mapreduce hdfs

我已将类型为LibSVM的对象序列化为名为j48.model的文件。此文件已传输到HDFS文件系统。

现在,在hadoop mapreduce代码中,如何反序列化此对象并将其读回到类LibSVM的实例中?我已将与LIBSVM相关的.jar文件作为外部jar文件包含在ma reduce项目中。

哪些JAVA方法可以帮助我将文件j48.model的内容读入LibSVM对象?

1 个答案:

答案 0 :(得分:5)

当您打开HDFS URL时,它会返回一个InputStream。

FileSystem fs = FileSystem.get(new Configuration());
InputStream in = fs.open(new Path("your uri"));

您可以将此输入流包装在ObjectInputStream中:

ObjectInputStream objReader = new ObjectInputStream(in);

并从中读取您的对象:

LibSVM lib = (LibSVM)objReader.readObject();