Class

org.apache.spark.sql.execution.aggregate

TungstenAggregationIterator

Related Doc: package aggregate

Permalink

class TungstenAggregationIterator extends AggregationIterator with Logging

An iterator used to evaluate aggregate functions. It operates on UnsafeRows.

This iterator first uses hash-based aggregation to process input rows. It uses a hash map to store groups and their corresponding aggregation buffers. If this map cannot allocate memory from memory manager, it spills the map into disk and creates a new one. After processed all the input, then merge all the spills together using external sorter, and do sort-based aggregation.

The process has the following step:

The code of this class is organized as follows:

Linear Supertypes
AggregationIterator, Logging, Iterator[UnsafeRow], TraversableOnce[UnsafeRow], GenTraversableOnce[UnsafeRow], AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. TungstenAggregationIterator
  2. AggregationIterator
  3. Logging
  4. Iterator
  5. TraversableOnce
  6. GenTraversableOnce
  7. AnyRef
  8. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new TungstenAggregationIterator(groupingExpressions: Seq[NamedExpression], aggregateExpressions: Seq[AggregateExpression], aggregateAttributes: Seq[Attribute], initialInputBufferOffset: Int, resultExpressions: Seq[NamedExpression], newMutableProjection: (Seq[Expression], Seq[Attribute]) ⇒ MutableProjection, originalInputAttributes: Seq[Attribute], inputIter: Iterator[InternalRow], testFallbackStartsAt: Option[(Int, Int)], numOutputRows: SQLMetric, peakMemory: SQLMetric, spillSize: SQLMetric)

    Permalink

    groupingExpressions

    expressions for grouping keys

    aggregateExpressions

    AggregateExpression containing AggregateFunctions with mode Partial, PartialMerge, or Final.

    aggregateAttributes

    the attributes of the aggregateExpressions' outputs when they are stored in the final aggregation buffer.

    resultExpressions

    expressions for generating output rows.

    newMutableProjection

    the function used to create mutable projections.

    originalInputAttributes

    attributes of representing input rows from inputIter.

    inputIter

    the iterator containing input UnsafeRows.

Type Members

  1. class GroupedIterator[B >: A] extends AbstractIterator[Seq[B]] with Iterator[Seq[B]]

    Permalink
    Definition Classes
    Iterator

Value Members

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

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

    Permalink
    Definition Classes
    AnyRef → Any
  3. def ++[B >: UnsafeRow](that: ⇒ GenTraversableOnce[B]): Iterator[B]

    Permalink
    Definition Classes
    Iterator
  4. def /:[B](z: B)(op: (B, UnsafeRow) ⇒ B): B

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  5. def :\[B](z: B)(op: (UnsafeRow, B) ⇒ B): B

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  6. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  7. def addString(b: StringBuilder): StringBuilder

    Permalink
    Definition Classes
    TraversableOnce
  8. def addString(b: StringBuilder, sep: String): StringBuilder

    Permalink
    Definition Classes
    TraversableOnce
  9. def addString(b: StringBuilder, start: String, sep: String, end: String): StringBuilder

    Permalink
    Definition Classes
    TraversableOnce
  10. def aggregate[B](z: ⇒ B)(seqop: (B, UnsafeRow) ⇒ B, combop: (B, B) ⇒ B): B

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  11. val aggregateFunctions: Array[AggregateFunction]

    Permalink
    Attributes
    protected
    Definition Classes
    AggregationIterator
  12. val allImperativeAggregateFunctionPositions: Array[Int]

    Permalink
    Attributes
    protected[this]
    Definition Classes
    AggregationIterator
  13. val allImperativeAggregateFunctions: Array[ImperativeAggregate]

    Permalink
    Attributes
    protected[this]
    Definition Classes
    AggregationIterator
  14. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  15. def buffered: BufferedIterator[UnsafeRow]

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

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  17. def collect[B](pf: PartialFunction[UnsafeRow, B]): Iterator[B]

    Permalink
    Definition Classes
    Iterator
    Annotations
    @migration
    Migration

    (Changed in version 2.8.0) collect has changed. The previous behavior can be reproduced with toSeq.

  18. def collectFirst[B](pf: PartialFunction[UnsafeRow, B]): Option[B]

    Permalink
    Definition Classes
    TraversableOnce
  19. def contains(elem: Any): Boolean

    Permalink
    Definition Classes
    Iterator
  20. def copyToArray[B >: UnsafeRow](xs: Array[B], start: Int, len: Int): Unit

    Permalink
    Definition Classes
    Iterator → TraversableOnce → GenTraversableOnce
  21. def copyToArray[B >: UnsafeRow](xs: Array[B]): Unit

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  22. def copyToArray[B >: UnsafeRow](xs: Array[B], start: Int): Unit

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  23. def copyToBuffer[B >: UnsafeRow](dest: Buffer[B]): Unit

    Permalink
    Definition Classes
    TraversableOnce
  24. def corresponds[B](that: GenTraversableOnce[B])(p: (UnsafeRow, B) ⇒ Boolean): Boolean

    Permalink
    Definition Classes
    Iterator
  25. def count(p: (UnsafeRow) ⇒ Boolean): Int

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  26. def drop(n: Int): Iterator[UnsafeRow]

    Permalink
    Definition Classes
    Iterator
  27. def dropWhile(p: (UnsafeRow) ⇒ Boolean): Iterator[UnsafeRow]

    Permalink
    Definition Classes
    Iterator
  28. def duplicate: (Iterator[UnsafeRow], Iterator[UnsafeRow])

    Permalink
    Definition Classes
    Iterator
  29. final def eq(arg0: AnyRef): Boolean

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

    Permalink
    Definition Classes
    AnyRef → Any
  31. def exists(p: (UnsafeRow) ⇒ Boolean): Boolean

    Permalink
    Definition Classes
    Iterator → TraversableOnce → GenTraversableOnce
  32. val expressionAggInitialProjection: MutableProjection

    Permalink
    Attributes
    protected[this]
    Definition Classes
    AggregationIterator
  33. def filter(p: (UnsafeRow) ⇒ Boolean): Iterator[UnsafeRow]

    Permalink
    Definition Classes
    Iterator
  34. def filterNot(p: (UnsafeRow) ⇒ Boolean): Iterator[UnsafeRow]

    Permalink
    Definition Classes
    Iterator
  35. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  36. def find(p: (UnsafeRow) ⇒ Boolean): Option[UnsafeRow]

    Permalink
    Definition Classes
    Iterator → TraversableOnce → GenTraversableOnce
  37. def flatMap[B](f: (UnsafeRow) ⇒ GenTraversableOnce[B]): Iterator[B]

    Permalink
    Definition Classes
    Iterator
  38. def fold[A1 >: UnsafeRow](z: A1)(op: (A1, A1) ⇒ A1): A1

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  39. def foldLeft[B](z: B)(op: (B, UnsafeRow) ⇒ B): B

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  40. def foldRight[B](z: B)(op: (UnsafeRow, B) ⇒ B): B

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  41. def forall(p: (UnsafeRow) ⇒ Boolean): Boolean

    Permalink
    Definition Classes
    Iterator → TraversableOnce → GenTraversableOnce
  42. def foreach[U](f: (UnsafeRow) ⇒ U): Unit

    Permalink
    Definition Classes
    Iterator → TraversableOnce → GenTraversableOnce
  43. val generateOutput: (UnsafeRow, InternalRow) ⇒ UnsafeRow

    Permalink
    Attributes
    protected
    Definition Classes
    AggregationIterator
  44. def generateProcessRow(expressions: Seq[AggregateExpression], functions: Seq[AggregateFunction], inputAttributes: Seq[Attribute]): (InternalRow, InternalRow) ⇒ Unit

    Permalink
    Attributes
    protected
    Definition Classes
    AggregationIterator
  45. def generateResultProjection(): (UnsafeRow, InternalRow) ⇒ UnsafeRow

    Permalink
    Attributes
    protected
    Definition Classes
    TungstenAggregationIteratorAggregationIterator
  46. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  47. def grouped[B >: UnsafeRow](size: Int): GroupedIterator[B]

    Permalink
    Definition Classes
    Iterator
  48. val groupingAttributes: Seq[Attribute]

    Permalink
    Attributes
    protected
    Definition Classes
    AggregationIterator
  49. val groupingProjection: UnsafeProjection

    Permalink
    Attributes
    protected
    Definition Classes
    AggregationIterator
  50. def hasDefiniteSize: Boolean

    Permalink
    Definition Classes
    Iterator → TraversableOnce → GenTraversableOnce
  51. final def hasNext: Boolean

    Permalink
    Definition Classes
    TungstenAggregationIterator → Iterator
  52. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  53. def indexOf[B >: UnsafeRow](elem: B): Int

    Permalink
    Definition Classes
    Iterator
  54. def indexWhere(p: (UnsafeRow) ⇒ Boolean): Int

    Permalink
    Definition Classes
    Iterator
  55. def initializeAggregateFunctions(expressions: Seq[AggregateExpression], startingInputBufferOffset: Int): Array[AggregateFunction]

    Permalink
    Attributes
    protected
    Definition Classes
    AggregationIterator
  56. def initializeBuffer(buffer: InternalRow): Unit

    Permalink

    Initializes buffer values for all aggregate functions.

    Initializes buffer values for all aggregate functions.

    Attributes
    protected
    Definition Classes
    AggregationIterator
  57. def initializeLogIfNecessary(isInterpreter: Boolean): Unit

    Permalink
    Attributes
    protected
    Definition Classes
    Logging
  58. def isEmpty: Boolean

    Permalink
    Definition Classes
    Iterator → TraversableOnce → GenTraversableOnce
  59. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  60. def isTraceEnabled(): Boolean

    Permalink
    Attributes
    protected
    Definition Classes
    Logging
  61. def isTraversableAgain: Boolean

    Permalink
    Definition Classes
    Iterator → GenTraversableOnce
  62. def length: Int

    Permalink
    Definition Classes
    Iterator
  63. def log: Logger

    Permalink
    Attributes
    protected
    Definition Classes
    Logging
  64. def logDebug(msg: ⇒ String, throwable: Throwable): Unit

    Permalink
    Attributes
    protected
    Definition Classes
    Logging
  65. def logDebug(msg: ⇒ String): Unit

    Permalink
    Attributes
    protected
    Definition Classes
    Logging
  66. def logError(msg: ⇒ String, throwable: Throwable): Unit

    Permalink
    Attributes
    protected
    Definition Classes
    Logging
  67. def logError(msg: ⇒ String): Unit

    Permalink
    Attributes
    protected
    Definition Classes
    Logging
  68. def logInfo(msg: ⇒ String, throwable: Throwable): Unit

    Permalink
    Attributes
    protected
    Definition Classes
    Logging
  69. def logInfo(msg: ⇒ String): Unit

    Permalink
    Attributes
    protected
    Definition Classes
    Logging
  70. def logName: String

    Permalink
    Attributes
    protected
    Definition Classes
    Logging
  71. def logTrace(msg: ⇒ String, throwable: Throwable): Unit

    Permalink
    Attributes
    protected
    Definition Classes
    Logging
  72. def logTrace(msg: ⇒ String): Unit

    Permalink
    Attributes
    protected
    Definition Classes
    Logging
  73. def logWarning(msg: ⇒ String, throwable: Throwable): Unit

    Permalink
    Attributes
    protected
    Definition Classes
    Logging
  74. def logWarning(msg: ⇒ String): Unit

    Permalink
    Attributes
    protected
    Definition Classes
    Logging
  75. def map[B](f: (UnsafeRow) ⇒ B): Iterator[B]

    Permalink
    Definition Classes
    Iterator
  76. def max[B >: UnsafeRow](implicit cmp: Ordering[B]): UnsafeRow

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  77. def maxBy[B](f: (UnsafeRow) ⇒ B)(implicit cmp: Ordering[B]): UnsafeRow

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  78. def min[B >: UnsafeRow](implicit cmp: Ordering[B]): UnsafeRow

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  79. def minBy[B](f: (UnsafeRow) ⇒ B)(implicit cmp: Ordering[B]): UnsafeRow

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  80. def mkString: String

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  81. def mkString(sep: String): String

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  82. def mkString(start: String, sep: String, end: String): String

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  83. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  84. final def next(): UnsafeRow

    Permalink
    Definition Classes
    TungstenAggregationIterator → Iterator
  85. def nonEmpty: Boolean

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  86. final def notify(): Unit

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

    Permalink
    Definition Classes
    AnyRef
  88. def outputForEmptyGroupingKeyWithoutInput(): UnsafeRow

    Permalink

    Generate an output row when there is no input and there is no grouping expression.

  89. def padTo[A1 >: UnsafeRow](len: Int, elem: A1): Iterator[A1]

    Permalink
    Definition Classes
    Iterator
  90. def partition(p: (UnsafeRow) ⇒ Boolean): (Iterator[UnsafeRow], Iterator[UnsafeRow])

    Permalink
    Definition Classes
    Iterator
  91. def patch[B >: UnsafeRow](from: Int, patchElems: Iterator[B], replaced: Int): Iterator[B]

    Permalink
    Definition Classes
    Iterator
  92. val processRow: (InternalRow, InternalRow) ⇒ Unit

    Permalink
    Attributes
    protected
    Definition Classes
    AggregationIterator
  93. def product[B >: UnsafeRow](implicit num: Numeric[B]): B

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  94. def reduce[A1 >: UnsafeRow](op: (A1, A1) ⇒ A1): A1

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  95. def reduceLeft[B >: UnsafeRow](op: (B, UnsafeRow) ⇒ B): B

    Permalink
    Definition Classes
    TraversableOnce
  96. def reduceLeftOption[B >: UnsafeRow](op: (B, UnsafeRow) ⇒ B): Option[B]

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  97. def reduceOption[A1 >: UnsafeRow](op: (A1, A1) ⇒ A1): Option[A1]

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  98. def reduceRight[B >: UnsafeRow](op: (UnsafeRow, B) ⇒ B): B

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  99. def reduceRightOption[B >: UnsafeRow](op: (UnsafeRow, B) ⇒ B): Option[B]

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  100. def reversed: List[UnsafeRow]

    Permalink
    Attributes
    protected[this]
    Definition Classes
    TraversableOnce
  101. def sameElements(that: Iterator[_]): Boolean

    Permalink
    Definition Classes
    Iterator
  102. def scanLeft[B](z: B)(op: (B, UnsafeRow) ⇒ B): Iterator[B]

    Permalink
    Definition Classes
    Iterator
  103. def scanRight[B](z: B)(op: (UnsafeRow, B) ⇒ B): Iterator[B]

    Permalink
    Definition Classes
    Iterator
  104. def seq: Iterator[UnsafeRow]

    Permalink
    Definition Classes
    Iterator → TraversableOnce → GenTraversableOnce
  105. def size: Int

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  106. def slice(from: Int, until: Int): Iterator[UnsafeRow]

    Permalink
    Definition Classes
    Iterator
  107. def sliding[B >: UnsafeRow](size: Int, step: Int): GroupedIterator[B]

    Permalink
    Definition Classes
    Iterator
  108. def span(p: (UnsafeRow) ⇒ Boolean): (Iterator[UnsafeRow], Iterator[UnsafeRow])

    Permalink
    Definition Classes
    Iterator
  109. def sum[B >: UnsafeRow](implicit num: Numeric[B]): B

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  110. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  111. def take(n: Int): Iterator[UnsafeRow]

    Permalink
    Definition Classes
    Iterator
  112. def takeWhile(p: (UnsafeRow) ⇒ Boolean): Iterator[UnsafeRow]

    Permalink
    Definition Classes
    Iterator
  113. def to[Col[_]](implicit cbf: CanBuildFrom[Nothing, UnsafeRow, Col[UnsafeRow]]): Col[UnsafeRow]

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  114. def toArray[B >: UnsafeRow](implicit arg0: ClassTag[B]): Array[B]

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  115. def toBuffer[B >: UnsafeRow]: Buffer[B]

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  116. def toIndexedSeq: IndexedSeq[UnsafeRow]

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  117. def toIterable: Iterable[UnsafeRow]

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  118. def toIterator: Iterator[UnsafeRow]

    Permalink
    Definition Classes
    Iterator → GenTraversableOnce
  119. def toList: List[UnsafeRow]

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  120. def toMap[T, U](implicit ev: <:<[UnsafeRow, (T, U)]): Map[T, U]

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  121. def toSeq: Seq[UnsafeRow]

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  122. def toSet[B >: UnsafeRow]: Set[B]

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  123. def toStream: Stream[UnsafeRow]

    Permalink
    Definition Classes
    Iterator → GenTraversableOnce
  124. def toString(): String

    Permalink
    Definition Classes
    Iterator → AnyRef → Any
  125. def toTraversable: Traversable[UnsafeRow]

    Permalink
    Definition Classes
    Iterator → TraversableOnce → GenTraversableOnce
  126. def toVector: Vector[UnsafeRow]

    Permalink
    Definition Classes
    TraversableOnce → GenTraversableOnce
  127. final def wait(): Unit

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

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

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  130. def withFilter(p: (UnsafeRow) ⇒ Boolean): Iterator[UnsafeRow]

    Permalink
    Definition Classes
    Iterator
  131. def zip[B](that: Iterator[B]): Iterator[(UnsafeRow, B)]

    Permalink
    Definition Classes
    Iterator
  132. def zipAll[B, A1 >: UnsafeRow, B1 >: B](that: Iterator[B], thisElem: A1, thatElem: B1): Iterator[(A1, B1)]

    Permalink
    Definition Classes
    Iterator
  133. def zipWithIndex: Iterator[(UnsafeRow, Int)]

    Permalink
    Definition Classes
    Iterator

Inherited from AggregationIterator

Inherited from Logging

Inherited from Iterator[UnsafeRow]

Inherited from TraversableOnce[UnsafeRow]

Inherited from GenTraversableOnce[UnsafeRow]

Inherited from AnyRef

Inherited from Any

Ungrouped