Class/Object

com.twitter.summingbird.memory

ConcurrentMemory

Related Docs: object ConcurrentMemory | package memory

Permalink

class ConcurrentMemory extends Platform[ConcurrentMemory] with DagOptimizer[ConcurrentMemory]

Linear Supertypes
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. ConcurrentMemory
  2. DagOptimizer
  3. Platform
  4. AnyRef
  5. Any
  1. Hide All
  2. Show all
Visibility
  1. Public
  2. All

Instance Constructors

  1. new ConcurrentMemory()(implicit jobID: JobId = ...)

    Permalink

Type Members

  1. type Buffer[k, v] = Service[k, v] with Sink[(k, v)]

    Permalink
    Definition Classes
    Platform
  2. type LitProd[T] = Literal[T, Prod]

    Permalink
    Definition Classes
    DagOptimizer
  3. type Plan[T] = ConcurrentMemoryPlan

    Permalink
    Definition Classes
    ConcurrentMemoryPlatform
  4. type Prod[T] = Producer[ConcurrentMemory, T]

    Permalink
    Definition Classes
    DagOptimizer
  5. type ProdCons[T] = Producer[ConcurrentMemory, Any]

    Permalink
  6. type Service[-K, +V] = (K) ⇒ Option[V]

    Permalink
    Definition Classes
    ConcurrentMemoryPlatform
  7. type Sink[T] = BlockingQueue[T]

    Permalink
    Definition Classes
    ConcurrentMemoryPlatform
  8. type Source[T] = TraversableOnce[T]

    Permalink
    Definition Classes
    ConcurrentMemoryPlatform
  9. type Store[K, V] = ConcurrentHashMap[K, V]

    Permalink
    Definition Classes
    ConcurrentMemoryPlatform

Value Members

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

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

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

    Permalink
    Definition Classes
    AnyRef → Any
  4. object AlsoPullUp extends Rule[Prod]

    Permalink

    We can always push all Also nodes all the way to the bottom of the dag MergedProducer(AlsoProducer(t, a), b) == AlsoProducer(t, MergedProducer(a, b))

    We can always push all Also nodes all the way to the bottom of the dag MergedProducer(AlsoProducer(t, a), b) == AlsoProducer(t, MergedProducer(a, b))

    Unary(l, fn), if l == AlsoProducer(tail, r) can be changed to AlsoProducer(tail, fn(r))

    Definition Classes
    DagOptimizer
  5. object DiamondToFlatMap extends PartialRule[Prod]

    Permalink

    (a.flatMap(f1) ++ a.flatMap(f2)) == a.flatMap { i => f1(i) ++ f2(i) }

    (a.flatMap(f1) ++ a.flatMap(f2)) == a.flatMap { i => f1(i) ++ f2(i) }

    Definition Classes
    DagOptimizer
  6. object FlatMapFusion extends PartialRule[Prod]

    Permalink

    a.flatMap(fn).flatMap(fn2) can be written as a.flatMap(compose(fn, fn2))

    a.flatMap(fn).flatMap(fn2) can be written as a.flatMap(compose(fn, fn2))

    Definition Classes
    DagOptimizer
  7. object FlatThenOptionFusion extends PartialRule[Prod]

    Permalink

    Combine flatMaps followed by optionMap into a single operation

    Combine flatMaps followed by optionMap into a single operation

    On the other direction, you might not want to run optionMap with flatMap since some platforms (storm) can't easily control source parallelism, so we don't want to push big expansions up to sources

    Definition Classes
    DagOptimizer
  8. object KeyFlatMapToFlatMap extends PartialRule[Prod]

    Permalink

    If you can't optimize KeyFlatMaps, use this

    If you can't optimize KeyFlatMaps, use this

    Definition Classes
    DagOptimizer
  9. object MergePullUp extends PartialRule[Prod]

    Permalink

    (a ++ b).flatMap(fn) == (a.flatMap(fn) ++ b.flatMap(fn)) (a ++ b).optionMap(fn) == (a.optionMap(fn) ++ b.optionMap(fn)) and since Merge is usually a no-op when combined with a grouping operation, it often pays to get merges as high the graph as possible.

    (a ++ b).flatMap(fn) == (a.flatMap(fn) ++ b.flatMap(fn)) (a ++ b).optionMap(fn) == (a.optionMap(fn) ++ b.optionMap(fn)) and since Merge is usually a no-op when combined with a grouping operation, it often pays to get merges as high the graph as possible.

    Definition Classes
    DagOptimizer
  10. object OptionMapFusion extends PartialRule[Prod]

    Permalink
    Definition Classes
    DagOptimizer
  11. object OptionToFlatMap extends PartialRule[Prod]

    Permalink

    If you don't care to distinguish between optionMap and flatMap, you can use this rule

    If you don't care to distinguish between optionMap and flatMap, you can use this rule

    Definition Classes
    DagOptimizer
  12. object RemoveIdentityKeyed extends PartialRule[Prod]

    Permalink

    Identity keyed producer is just a trick to make scala see methods on keyed types, they have no meaning at runtime.

    Identity keyed producer is just a trick to make scala see methods on keyed types, they have no meaning at runtime.

    Definition Classes
    DagOptimizer
  13. object RemoveNames extends PartialRule[Prod]

    Permalink

    Strip all the names.

    Strip all the names. Names are rightly considered as names on the irreducible parts of the input graph (functions, stores, sinks, sources, etc...) and not the AST that we generate and optimize along the way

    Definition Classes
    DagOptimizer
  14. object ValueFlatMapToFlatMap extends PartialRule[Prod]

    Permalink

    If you can't optimize ValueFlatMaps, use this

    If you can't optimize ValueFlatMaps, use this

    Definition Classes
    DagOptimizer
  15. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  16. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  17. def counter(group: Group, name: Name): Option[Long]

    Permalink
  18. final def eq(arg0: AnyRef): Boolean

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

    Permalink
    Definition Classes
    AnyRef → Any
  20. def expressionDag[T](p: Producer[ConcurrentMemory, T]): (ExpressionDag[Prod], Id[T])

    Permalink

    Create an ExpressionDag for the given node.

    Create an ExpressionDag for the given node. This should be the final tail of the graph. You can apply optimizations on this Dag and then use the Id returned to evaluate it back to an optimized producer

    Definition Classes
    DagOptimizer
  21. def finalize(): Unit

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

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

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

    Permalink
    Definition Classes
    Any
  25. def mkAlso[T, U]: (Prod[T], Prod[U]) ⇒ Prod[U]

    Permalink

    This makes a potentially unsound cast.

    This makes a potentially unsound cast. Since this method is only use in converting from an AlsoProducer to a Literal[T, Prod] below, it is not actually dangerous because we always use it in a safe position.

    Attributes
    protected
    Definition Classes
    DagOptimizer
  26. def mkAlsoTail[T, U]: (Prod[T], Prod[U]) ⇒ Prod[U]

    Permalink
    Attributes
    protected
    Definition Classes
    DagOptimizer
  27. def mkFlatMapped[T, U](fn: (T) ⇒ TraversableOnce[U]): (Prod[T]) ⇒ Prod[U]

    Permalink
    Attributes
    protected
    Definition Classes
    DagOptimizer
  28. def mkIdentKey[K, V]: (Prod[(K, V)]) ⇒ Prod[(K, V)]

    Permalink
    Attributes
    protected
    Definition Classes
    DagOptimizer
  29. def mkKeyFM[T, U, V](fn: (T) ⇒ TraversableOnce[U]): (Prod[(T, V)]) ⇒ Prod[(U, V)]

    Permalink
    Attributes
    protected
    Definition Classes
    DagOptimizer
  30. def mkMerge[T]: (Prod[T], Prod[T]) ⇒ Prod[T]

    Permalink
    Attributes
    protected
    Definition Classes
    DagOptimizer
  31. def mkNamed[T](name: String): (Prod[T]) ⇒ Prod[T]

    Permalink
    Attributes
    protected
    Definition Classes
    DagOptimizer
  32. def mkOptMap[T, U](fn: (T) ⇒ Option[U]): (Prod[T]) ⇒ Prod[U]

    Permalink
    Attributes
    protected
    Definition Classes
    DagOptimizer
  33. def mkSrv[K, T, V](serv: Service[K, V]): (Prod[(K, T)]) ⇒ Prod[(K, (T, Option[V]))]

    Permalink
    Attributes
    protected
    Definition Classes
    DagOptimizer
  34. def mkSum[K, V](store: Store[K, V], sg: Semigroup[V]): (Prod[(K, V)]) ⇒ Prod[(K, (Option[V], V))]

    Permalink
    Attributes
    protected
    Definition Classes
    DagOptimizer
  35. def mkTPNamed[T](name: String): (Prod[T]) ⇒ Prod[T]

    Permalink
    Attributes
    protected
    Definition Classes
    DagOptimizer
  36. def mkValueFM[K, U, V](fn: (U) ⇒ TraversableOnce[V]): (Prod[(K, U)]) ⇒ Prod[(K, V)]

    Permalink
    Attributes
    protected
    Definition Classes
    DagOptimizer
  37. def mkWritten[T, U >: T](sink: Sink[U]): (Prod[T]) ⇒ Prod[T]

    Permalink
    Attributes
    protected
    Definition Classes
    DagOptimizer
  38. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  39. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  40. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  41. def optimize[T](p: Producer[ConcurrentMemory, T], rule: Rule[Prod]): Producer[ConcurrentMemory, T]

    Permalink

    Optimize the given producer according to the rule

    Optimize the given producer according to the rule

    Definition Classes
    DagOptimizer
  42. def plan[T](prod: TailProducer[ConcurrentMemory, T]): ConcurrentMemoryPlan

    Permalink
    Definition Classes
    ConcurrentMemoryPlatform
  43. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  44. def toLiteral[T](hm: HMap[Prod, LitProd], prod: Producer[ConcurrentMemory, T]): (HMap[Prod, LitProd], LitProd[T])

    Permalink
    Attributes
    protected
    Definition Classes
    DagOptimizer
  45. def toLiteral[T](prod: Producer[ConcurrentMemory, T]): Literal[T, Prod]

    Permalink

    Convert a Producer graph into a Literal in the Dag rewriter This is where the tedious work comes in.

    Convert a Producer graph into a Literal in the Dag rewriter This is where the tedious work comes in.

    Definition Classes
    DagOptimizer
  46. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  47. final def wait(): Unit

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

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

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from DagOptimizer[ConcurrentMemory]

Inherited from Platform[ConcurrentMemory]

Inherited from AnyRef

Inherited from Any

Ungrouped