com.twitter.summingbird.example

Serialization

object Serialization

Serialization is often the most important (and hairy) configuration issue for any system that needs to store its data over the long term. Summingbird controls serialization through the "Injection" interface.

By maintaining identical Injections from K and V to Array[Byte], one can guarantee that data written one day will be readable the next. This isn't the case with serialization engines like Kryo, where serialization format depends on unstable parameters, like the serializer registration order for the given Kryo instance.

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. Serialization
  2. AnyRef
  3. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Value Members

  1. final def !=(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

    Definition Classes
    AnyRef → Any
  4. final def ==(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  5. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  6. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  7. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  8. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  9. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  10. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  11. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  12. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  13. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  14. implicit def kInjection[T](implicit arg0: Codec[T]): Injection[(T, BatchID), Array[Byte]]

    Summingbird's implementation of the batch/realtime merge requires that the Storm-based workflow store (K, BatchID) -> V pairs, while the Hadoop-based workflow stores K -> (BatchID, V) pairs.

    Summingbird's implementation of the batch/realtime merge requires that the Storm-based workflow store (K, BatchID) -> V pairs, while the Hadoop-based workflow stores K -> (BatchID, V) pairs.

    The following two injections use Bijection's "Bufferable" object to generate injections that take (T, BatchID) or (BatchID, T) to bytes.

    For true production applications, I'd suggest defining a thrift or protobuf "pair" structure that can safely store these pairs over the long-term.

  15. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  16. final def notify(): Unit

    Definition Classes
    AnyRef
  17. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  18. implicit val statusCodec: Injection[Status, String]

    This Injection converts the twitter4j.

    This Injection converts the twitter4j.Status objects that Storm and Scalding will process into Strings.

  19. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  20. implicit val toBytes: Injection[Status, Array[Byte]]

    We can chain the Status <-> String injection above with the library-supplied String <-> Array[Byte] injection to generate a full-on serializer for Status objects of the type Injection[Status, Array[Byte]].

    We can chain the Status <-> String injection above with the library-supplied String <-> Array[Byte] injection to generate a full-on serializer for Status objects of the type Injection[Status, Array[Byte]]. Our Storm and Scalding sources can now pull in this injection using Scala's implicit resolution and properly register the serializer.

  21. def toString(): String

    Definition Classes
    AnyRef → Any
  22. implicit def vInj[V](implicit arg0: Codec[V]): Injection[(BatchID, V), Array[Byte]]

  23. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  24. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  25. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped