因此,我的任务是编写一个代码,将rdd数据Map到共享内存:
data: RDD[Vector]) // parametr to function
// local variables
val file: RandomAccessFile = new RandomAccessFile("/tmp/test.txt", "rw");
val out: MappedByteBuffer = file.getChannel().map(FileChannel.MapMode.READ_WRITE, 0, 60000);
data.foreach(a => {
val arr = a.toArray; // this is type Array[Double]
val o: MappedByteBuffer = out;
val bbuf = java.nio.ByteBuffer.allocate(8*arr.length) // represent array of double as byte buffer
bbuf.asDoubleBuffer.put(java.nio.DoubleBuffer.wrap(arr)) // add to bytebuffer
o.put(bbuf);
});
现在,问题是bytebuffer是不可序列化的,我不知道如何序列化它。我可以尝试一些不同的方法将双数组附加到缓冲区中,但只要函数是不可序列化的,我就会不断出错。我怀疑.put()在第一个问题解决后也会产生错误。我该怎么做呢。
暂无答案!
目前还没有任何答案,快来回答吧!