将对象写入hadoop hdfs问题

tuwxkamq  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(377)

我正在尝试将一个对象写入hdfs。

Split currentsplit = new Split();
Path p = new Path("C45/mysavedobject");
ObjectOutputStream oos = new ObjectOutputStream(fs.create(p));
oos.writeObject(currentsplit);
oos.close();

但我无法得到确切的对象值。

Path p = new Path("C45/mysavedobject");
Split curntsplit = null;
ObjectInputStream ois = new ObjectInputStream(fs.open(p));
try {
    curntsplit = (Split) ois.readObject();
} catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
 ois.close();

显示重复对象值。
在driver中,我得到:

objjjjjjj in driver pck.Split@14da173c

在将对象写入文件并读回驱动程序本身之后,我得到了一个备用对象值。

objjjjjj in mysavedobject pck.Split@62eade0

我想要驱动程序对象沿着我的Map程序代码。
为什么会这样?

camsedfj

camsedfj1#

您的自定义split对象(pck.split)没有定义tostring方法,因此您看到的是类名后跟内存中的地址(因为java没有其他方法向您显示该对象的字符串值)。
只需将一个tostring方法实现添加到自定义的split类中并重新运行—现在您应该能够确认writed和read对象是否具有相同的内容。

相关问题