0fba22b3d2
Note that we use scala.Serializable introduced in Scala 2.9 instead of java.io.Serializable. Also, case classes inherit from scala.Serializable by default.
26 lines
620 B
Scala
26 lines
620 B
Scala
package spark
|
|
|
|
import java.io._
|
|
|
|
import org.apache.hadoop.io.ObjectWritable
|
|
import org.apache.hadoop.io.Writable
|
|
import org.apache.hadoop.mapred.JobConf
|
|
|
|
class SerializableWritable[T <: Writable](@transient var t: T) extends Serializable {
|
|
def value = t
|
|
override def toString = t.toString
|
|
|
|
private def writeObject(out: ObjectOutputStream) {
|
|
out.defaultWriteObject()
|
|
new ObjectWritable(t).write(out)
|
|
}
|
|
|
|
private def readObject(in: ObjectInputStream) {
|
|
in.defaultReadObject()
|
|
val ow = new ObjectWritable()
|
|
ow.setConf(new JobConf())
|
|
ow.readFields(in)
|
|
t = ow.get().asInstanceOf[T]
|
|
}
|
|
}
|