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

Lon*_*guy 0 hadoop mapreduce hdfs

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

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

什么JAVA方法帮助我将文件j48.model的内容读入LibSVM对象?

Raz*_*van 5

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

FileSystem fs = FileSystem.get(new Configuration());
InputStream in = fs.open(new Path("your uri"));
Run Code Online (Sandbox Code Playgroud)

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

ObjectInputStream objReader = new ObjectInputStream(in);
Run Code Online (Sandbox Code Playgroud)

并从中读取您的对象:

LibSVM lib = (LibSVM)objReader.readObject();
Run Code Online (Sandbox Code Playgroud)