Skip to content
Snippets Groups Projects
Commit 8ee3ec29 authored by Matei Zaharia's avatar Matei Zaharia
Browse files

Merge remote branch 'origin/custom-serialization' into new-rdds

parents d39f5dd1 7408230b
No related branches found
No related tags found
No related merge requests found
No preview for this file type
File added
...@@ -8,6 +8,7 @@ import scala.collection.immutable ...@@ -8,6 +8,7 @@ import scala.collection.immutable
import scala.collection.mutable import scala.collection.mutable
import com.esotericsoftware.kryo._ import com.esotericsoftware.kryo._
import com.esotericsoftware.kryo.{Serializer => KSerializer}
object ZigZag { object ZigZag {
def writeInt(n: Int, out: OutputStream) { def writeInt(n: Int, out: OutputStream) {
...@@ -115,6 +116,8 @@ class KryoSerialization extends SerializationStrategy with Logging { ...@@ -115,6 +116,8 @@ class KryoSerialization extends SerializationStrategy with Logging {
def createKryo(): Kryo = { def createKryo(): Kryo = {
val kryo = new Kryo() val kryo = new Kryo()
// Register some commonly used classes
val toRegister: Seq[AnyRef] = Seq( val toRegister: Seq[AnyRef] = Seq(
// Arrays // Arrays
Array(1), Array(1.0), Array(1.0f), Array(1L), Array(""), Array(("", "")), Array(1), Array(1.0), Array(1.0f), Array(1L), Array(""), Array(("", "")),
...@@ -123,16 +126,29 @@ class KryoSerialization extends SerializationStrategy with Logging { ...@@ -123,16 +126,29 @@ class KryoSerialization extends SerializationStrategy with Logging {
("", ""), (1, 1), (1.0, 1.0), (1L, 1L), ("", ""), (1, 1), (1.0, 1.0), (1L, 1L),
(1, 1.0), (1.0, 1), (1L, 1.0), (1.0, 1L), (1, 1L), (1L, 1), (1, 1.0), (1.0, 1), (1L, 1.0), (1.0, 1L), (1, 1L), (1L, 1),
// Scala collections // Scala collections
Nil, List(1), immutable.Map(1 -> 1), immutable.HashMap(1 -> 1), List(1), immutable.Map(1 -> 1), immutable.HashMap(1 -> 1),
mutable.Map(1 -> 1), mutable.HashMap(1 -> 1), mutable.ArrayBuffer(1), mutable.Map(1 -> 1), mutable.HashMap(1 -> 1), mutable.ArrayBuffer(1),
// Options and Either // Options and Either
Some(1), None, Left(1), Right(1), Some(1), Left(1), Right(1),
// Higher-dimensional tuples // Higher-dimensional tuples
(1, 1, 1), (1, 1, 1, 1), (1, 1, 1, 1, 1) (1, 1, 1), (1, 1, 1, 1), (1, 1, 1, 1, 1)
) )
for (obj <- toRegister) { for (obj <- toRegister) {
kryo.register(obj.getClass) kryo.register(obj.getClass)
} }
// Register some commonly used Scala singleton objects. Because these
// are singletons, we must return the exact same local object when we
// deserialize rather than returning a clone as FieldSerializer would.
kryo.register(None.getClass, new KSerializer {
override def writeObjectData(buf: ByteBuffer, obj: AnyRef) {}
override def readObjectData[T](buf: ByteBuffer, cls: Class[T]): T = None.asInstanceOf[T]
})
kryo.register(Nil.getClass, new KSerializer {
override def writeObjectData(buf: ByteBuffer, obj: AnyRef) {}
override def readObjectData[T](buf: ByteBuffer, cls: Class[T]): T = Nil.asInstanceOf[T]
})
val regCls = System.getProperty("spark.kryo.registrator") val regCls = System.getProperty("spark.kryo.registrator")
if (regCls != null) { if (regCls != null) {
logInfo("Running user registrator: " + regCls) logInfo("Running user registrator: " + regCls)
......
...@@ -50,6 +50,7 @@ CLASSPATH+=:$CORE_DIR/lib/jetty-7.1.6.v20100715/jetty-server-7.1.6.v20100715.jar ...@@ -50,6 +50,7 @@ CLASSPATH+=:$CORE_DIR/lib/jetty-7.1.6.v20100715/jetty-server-7.1.6.v20100715.jar
CLASSPATH+=:$CORE_DIR/lib/jetty-7.1.6.v20100715/servlet-api-2.5.jar CLASSPATH+=:$CORE_DIR/lib/jetty-7.1.6.v20100715/servlet-api-2.5.jar
CLASSPATH+=:$CORE_DIR/lib/kryo-1.04-mod/kryo-1.04-mod.jar CLASSPATH+=:$CORE_DIR/lib/kryo-1.04-mod/kryo-1.04-mod.jar
CLASSPATH+=:$CORE_DIR/lib/kryo-1.04-mod/minlog-1.2.jar CLASSPATH+=:$CORE_DIR/lib/kryo-1.04-mod/minlog-1.2.jar
CLASSPATH+=:$CORE_DIR/lib/kryo-1.04-mod/objenesis-1.2.jar
CLASSPATH+=:$CORE_DIR/lib/kryo-1.04-mod/reflectasm-1.01.jar CLASSPATH+=:$CORE_DIR/lib/kryo-1.04-mod/reflectasm-1.01.jar
CLASSPATH+=:$CORE_DIR/lib/apache-log4j-1.2.16/log4j-1.2.16.jar CLASSPATH+=:$CORE_DIR/lib/apache-log4j-1.2.16/log4j-1.2.16.jar
CLASSPATH+=:$CORE_DIR/lib/slf4j-1.6.1/slf4j-api-1.6.1.jar CLASSPATH+=:$CORE_DIR/lib/slf4j-1.6.1/slf4j-api-1.6.1.jar
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment