case class GpuMaxBy(valueExpr: Expression, orderingExpr: Expression) extends GpuMaxMinByBase with Product with Serializable
- Alphabetic
- By Inheritance
- GpuMaxBy
- GpuMaxMinByBase
- Serializable
- Serializable
- GpuAggregateFunction
- GpuUnevaluable
- ShimExpression
- GpuExpression
- Expression
- TreeNode
- TreePatternBits
- Product
- Equals
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
- new GpuMaxBy(valueExpr: Expression, orderingExpr: Expression)
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
aggBufferAttributes: Seq[AttributeReference]
This is the contract with the outside world.
This is the contract with the outside world. It describes what the output of postUpdate should look like, and what the input to preMerge looks like. It also describes what the output of postMerge must look like.
- Definition Classes
- GpuMaxMinByBase → GpuAggregateFunction
-
def
apply(number: Int): TreeNode[_]
- Definition Classes
- TreeNode
-
def
argString(maxFields: Int): String
- Definition Classes
- TreeNode
-
def
asCode: String
- Definition Classes
- TreeNode
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
lazy val
canonicalized: Expression
- Definition Classes
- GpuExpression → Expression
-
def
checkInputDataTypes(): TypeCheckResult
- Definition Classes
- Expression
-
def
children: Seq[Expression]
- Definition Classes
- GpuMaxMinByBase → TreeNode
-
def
childrenResolved: Boolean
- Definition Classes
- Expression
-
def
clone(): Expression
- Definition Classes
- TreeNode → AnyRef
-
def
collect[B](pf: PartialFunction[Expression, B]): Seq[B]
- Definition Classes
- TreeNode
-
def
collectFirst[B](pf: PartialFunction[Expression, B]): Option[B]
- Definition Classes
- TreeNode
-
def
collectLeaves(): Seq[Expression]
- Definition Classes
- TreeNode
-
final
def
columnarEval(batch: ColumnarBatch): GpuColumnVector
Returns the result of evaluating this expression on the entire
ColumnarBatch.Returns the result of evaluating this expression on the entire
ColumnarBatch. The result of calling this is aGpuColumnVector.By convention any
GpuColumnVectorreturned by columnarEval is owned by the caller and will need to be closed by them. This can happen by putting it into aColumnarBatchand closing the batch or by closing the vector directly if it is a temporary value.- Definition Classes
- GpuUnevaluable → GpuExpression
-
final
def
columnarEvalAny(batch: ColumnarBatch): Any
Returns the result of evaluating this expression on the entire
ColumnarBatch.Returns the result of evaluating this expression on the entire
ColumnarBatch. The result of calling this may be a singleGpuColumnVectoror a scalar value. Scalar values typically happen if they are a part of the expression i.e. col("a") + 100. In this case the 100 is a literal that Add would have to be able to handle.By convention any
AutoCloseablereturned by columnarEvalAny is owned by the caller and will need to be closed by them.- Definition Classes
- GpuUnevaluable → GpuExpression
-
final
def
containsAllPatterns(patterns: TreePattern*): Boolean
- Definition Classes
- TreePatternBits
-
final
def
containsAnyPattern(patterns: TreePattern*): Boolean
- Definition Classes
- TreePatternBits
-
lazy val
containsChild: Set[TreeNode[_]]
- Definition Classes
- TreeNode
-
final
def
containsPattern(t: TreePattern): Boolean
- Definition Classes
- TreePatternBits
- Annotations
- @inline()
-
def
convertToAst(numFirstTableColumns: Int): AstExpression
Build an equivalent representation of this expression in a cudf AST.
Build an equivalent representation of this expression in a cudf AST.
- numFirstTableColumns
number of columns in the leftmost input table. Spark places the columns of all inputs in a single sequence, while cudf AST uses an explicit table reference to make column indices unique. This parameter helps translate input column references from Spark's single sequence into cudf's separate sequences.
- returns
top node of the equivalent AST
- Definition Classes
- GpuExpression
-
def
copyTagsFrom(other: Expression): Unit
- Definition Classes
- TreeNode
-
lazy val
cudfMaxMinByAggregate: CudfAggregate
- Attributes
- protected
- Definition Classes
- GpuMaxBy → GpuMaxMinByBase
-
def
dataType: DataType
- Definition Classes
- GpuMaxMinByBase → Expression
-
lazy val
deterministic: Boolean
- Definition Classes
- Expression
-
def
disableCoalesceUntilInput(): Boolean
Override this if your expression cannot allow combining of data from multiple files into a single batch before it operates on them.
Override this if your expression cannot allow combining of data from multiple files into a single batch before it operates on them. These are for things like getting the input file name. Which for spark is stored in a thread local variable which means we have to jump through some hoops to make this work.
- Definition Classes
- GpuExpression
-
def
disableTieredProjectCombine: Boolean
If this returns true then tiered project will stop looking to combine expressions when this is seen.
If this returns true then tiered project will stop looking to combine expressions when this is seen.
- Definition Classes
- GpuExpression
-
final
def
doGenCode(ctx: CodegenContext, ev: ExprCode): ExprCode
- Definition Classes
- GpuExpression → Expression
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
eval(input: InternalRow = null): Any
- Definition Classes
- GpuExpression → Expression
-
lazy val
evaluateExpression: Expression
This takes the output of
postMergecomputes the final result of the aggregation.This takes the output of
postMergecomputes the final result of the aggregation.- Definition Classes
- GpuMaxMinByBase → GpuAggregateFunction
- Note
evaluateExpressionis bound toaggBufferAttributes, so the references used inevaluateExpressionmust also be used inaggBufferAttributes.
-
def
fastEquals(other: TreeNode[_]): Boolean
- Definition Classes
- TreeNode
-
def
filteredInputProjection(filter: Expression): Seq[Expression]
- Definition Classes
- GpuAggregateFunction
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
def
find(f: (Expression) ⇒ Boolean): Option[Expression]
- Definition Classes
- TreeNode
-
def
flatArguments: Iterator[Any]
- Attributes
- protected
- Definition Classes
- Expression
-
def
flatMap[A](f: (Expression) ⇒ TraversableOnce[A]): Seq[A]
- Definition Classes
- TreeNode
-
final
def
foldable: Boolean
An aggregate function is not foldable.
An aggregate function is not foldable.
- Definition Classes
- GpuAggregateFunction → Expression
-
def
foreach(f: (Expression) ⇒ Unit): Unit
- Definition Classes
- TreeNode
-
def
foreachUp(f: (Expression) ⇒ Unit): Unit
- Definition Classes
- TreeNode
-
def
genCode(ctx: CodegenContext): ExprCode
- Definition Classes
- Expression
-
def
generateTreeString(depth: Int, lastChildren: Seq[Boolean], append: (String) ⇒ Unit, verbose: Boolean, prefix: String, addSuffix: Boolean, maxFields: Int, printNodeId: Boolean, indent: Int): Unit
- Definition Classes
- TreeNode
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
getDefaultTreePatternBits: BitSet
- Attributes
- protected
- Definition Classes
- TreeNode
-
def
getTagValue[T](tag: TreeNodeTag[T]): Option[T]
- Definition Classes
- TreeNode
-
def
hasSideEffects: Boolean
Could evaluating this expression cause side-effects, such as throwing an exception?
Could evaluating this expression cause side-effects, such as throwing an exception?
- Definition Classes
- GpuExpression
-
def
hashCode(): Int
- Definition Classes
- TreeNode → AnyRef → Any
-
lazy val
initialValues: Seq[Expression]
These are values that spark calls initial because it uses them to initialize the aggregation buffer, and returns them in case of an empty aggregate when there are no expressions.
These are values that spark calls initial because it uses them to initialize the aggregation buffer, and returns them in case of an empty aggregate when there are no expressions.
In our case they are only used in a very specific case: the empty input reduction case. In this case we don't have input to reduce, but we do have reduction functions, so each reduction function's
initialValuesis invoked to populate a single row of output.- Definition Classes
- GpuMaxMinByBase → GpuAggregateFunction
-
def
innerChildren: Seq[TreeNode[_]]
- Definition Classes
- TreeNode
-
lazy val
inputProjection: Seq[Expression]
Using the child reference, define the shape of input batches sent to the update expressions
Using the child reference, define the shape of input batches sent to the update expressions
- Definition Classes
- GpuMaxMinByBase → GpuAggregateFunction
- Note
this can be thought of as "pre" update: as update consumes its output in order
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
isRuleIneffective(ruleId: RuleId): Boolean
- Attributes
- protected
- Definition Classes
- TreeNode
-
def
jsonFields: List[JField]
- Attributes
- protected
- Definition Classes
- TreeNode
-
final
def
legacyWithNewChildren(newChildren: Seq[Expression]): Expression
- Attributes
- protected
- Definition Classes
- TreeNode
-
def
makeCopy(newArgs: Array[AnyRef]): Expression
- Definition Classes
- TreeNode
-
def
map[A](f: (Expression) ⇒ A): Seq[A]
- Definition Classes
- TreeNode
-
def
mapChildren(f: (Expression) ⇒ Expression): Expression
- Definition Classes
- TreeNode
-
def
mapProductIterator[B](f: (Any) ⇒ B)(implicit arg0: ClassTag[B]): Array[B]
- Attributes
- protected
- Definition Classes
- TreeNode
-
def
markRuleAsIneffective(ruleId: RuleId): Unit
- Attributes
- protected
- Definition Classes
- TreeNode
-
lazy val
mergeAggregates: Seq[CudfAggregate]
merge: second half of the aggregation.
merge: second half of the aggregation. Also used to merge multiple batches in the update or merge stages. These cuDF aggregates consume the output of
preMerge. The sequence ofCudfAggregatemust match the shape ofaggBufferAttributes, and care must be taken to ensure that each cuDF aggregate is able to work with the corresponding input (i.e. aggBufferAttributes[i] is the input to mergeAggregates[i]). If a transformation is required,preMergecan be used to mutate the batches before they arrive atmergeAggregates.- Definition Classes
- GpuMaxMinByBase → GpuAggregateFunction
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
nodeName: String
- Definition Classes
- TreeNode
-
val
nodePatterns: Seq[TreePattern]
- Attributes
- protected
- Definition Classes
- TreeNode
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
def
nullable: Boolean
- Definition Classes
- GpuMaxMinByBase → Expression
-
def
numberedTreeString: String
- Definition Classes
- TreeNode
- val orderingExpr: Expression
-
val
origin: Origin
- Definition Classes
- TreeNode
-
def
otherCopyArgs: Seq[AnyRef]
- Attributes
- protected
- Definition Classes
- TreeNode
-
def
p(number: Int): Expression
- Definition Classes
- TreeNode
-
lazy val
postMerge: Seq[Expression]
- Definition Classes
- GpuMaxMinByBase → GpuAggregateFunction
-
final
lazy val
postMergeAttr: Seq[AttributeReference]
This is the last aggregation step, which optionally changes the result of the
mergeAggregate.This is the last aggregation step, which optionally changes the result of the
mergeAggregate. postMergeAttr: matches the order (and types) ofmergeAggregatespostMerge: binds topostMergeAttrand defines an expression that results in what Spark expects from the merge. We set this topostMergeAttrby default, for the pass through case (like inpostUpdate). GpuM2 is the exception, wherepostMergemutates the result of themergeAggregatesto output what Spark expects.- Definition Classes
- GpuAggregateFunction
-
lazy val
postUpdate: Seq[Expression]
- Definition Classes
- GpuMaxMinByBase → GpuAggregateFunction
-
final
lazy val
postUpdateAttr: Seq[AttributeReference]
This is the last step in the update phase.
This is the last step in the update phase. It can optionally modify the result of the cuDF update aggregates, or be a pass-through. postUpdateAttr: matches the order (and types) of
updateAggregatespostUpdate: binds topostUpdateAttrand defines an expression that results in what Spark expects from the update. By default this ispostUpdateAttr, as it should match the shape of the Spark agg buffer leaving cuDF, but in the M2 and Count cases we overwrite it, because the cuDF shape isn't what Spark expects.- Definition Classes
- GpuAggregateFunction
-
lazy val
preMerge: Seq[Expression]
This step is the first step into the merge phase.
This step is the first step into the merge phase. It can optionally modify the result of the postUpdate before it goes into the cuDF merge aggregation. preMerge: modify a partial batch to match the input required by a merge aggregate
This always binds to
aggBufferAttributesas that is the inbound schema for this aggregate from Spark. If it is set toaggBufferAttributesby default so the bind behaves like a pass through in most cases.- Definition Classes
- GpuMaxMinByBase → GpuAggregateFunction
-
def
prettyJson: String
- Definition Classes
- TreeNode
-
def
prettyName: String
- Definition Classes
- GpuMaxBy → Expression
-
def
references: AttributeSet
- Definition Classes
- Expression
-
lazy val
resolved: Boolean
- Definition Classes
- Expression
-
lazy val
retryable: Boolean
true means this expression can be used inside a retry block, otherwise false.
true means this expression can be used inside a retry block, otherwise false. An expression is retryable when
- it is deterministic, or
- when being non-deterministic, it is a Retryable and its children are all retryable.
- Definition Classes
- GpuExpression
-
val
selfNonDeterministic: Boolean
Whether an expression itself is non-deterministic when its "deterministic" is false, no matter whether it has any non-deterministic children.
Whether an expression itself is non-deterministic when its "deterministic" is false, no matter whether it has any non-deterministic children. An expression is actually a tree, and deterministic being false means there is at least one tree node is non-deterministic, but we need to know the exact nodes which are non-deterministic to check if it implements the Retryable.
Default to false because Spark checks only children by default in Expression. So it is non-deterministic iff it has non-deterministic children.
NOTE When overriding "deterministic", this should be taken care of.
- Definition Classes
- GpuExpression
-
final
def
semanticEquals(other: Expression): Boolean
- Definition Classes
- Expression
-
def
semanticHash(): Int
- Definition Classes
- Expression
-
def
setTagValue[T](tag: TreeNodeTag[T], value: T): Unit
- Definition Classes
- TreeNode
-
def
simpleString(maxFields: Int): String
- Definition Classes
- Expression → TreeNode
-
def
simpleStringWithNodeId(): String
- Definition Classes
- Expression → TreeNode
-
def
sql(isDistinct: Boolean): String
- Definition Classes
- GpuAggregateFunction
-
def
sql: String
- Definition Classes
- Expression
-
def
stringArgs: Iterator[Any]
- Attributes
- protected
- Definition Classes
- TreeNode
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toAggString(isDistinct: Boolean): String
String representation used in explain plans.
String representation used in explain plans.
- Definition Classes
- GpuAggregateFunction
-
def
toJSON: String
- Definition Classes
- TreeNode
-
def
toString(): String
- Definition Classes
- Expression → TreeNode → AnyRef → Any
-
def
transform(rule: PartialFunction[Expression, Expression]): Expression
- Definition Classes
- TreeNode
-
def
transformDown(rule: PartialFunction[Expression, Expression]): Expression
- Definition Classes
- TreeNode
-
def
transformDownWithPruning(cond: (TreePatternBits) ⇒ Boolean, ruleId: RuleId)(rule: PartialFunction[Expression, Expression]): Expression
- Definition Classes
- TreeNode
-
def
transformUp(rule: PartialFunction[Expression, Expression]): Expression
- Definition Classes
- TreeNode
-
def
transformUpWithBeforeAndAfterRuleOnChildren(cond: (Expression) ⇒ Boolean, ruleId: RuleId)(rule: PartialFunction[(Expression, Expression), Expression]): Expression
- Definition Classes
- TreeNode
-
def
transformUpWithPruning(cond: (TreePatternBits) ⇒ Boolean, ruleId: RuleId)(rule: PartialFunction[Expression, Expression]): Expression
- Definition Classes
- TreeNode
-
def
transformWithPruning(cond: (TreePatternBits) ⇒ Boolean, ruleId: RuleId)(rule: PartialFunction[Expression, Expression]): Expression
- Definition Classes
- TreeNode
-
lazy val
treePatternBits: BitSet
- Definition Classes
- TreeNode → TreePatternBits
-
def
treeString(append: (String) ⇒ Unit, verbose: Boolean, addSuffix: Boolean, maxFields: Int, printOperatorId: Boolean): Unit
- Definition Classes
- TreeNode
-
final
def
treeString(verbose: Boolean, addSuffix: Boolean, maxFields: Int, printOperatorId: Boolean): String
- Definition Classes
- TreeNode
-
final
def
treeString: String
- Definition Classes
- TreeNode
-
def
unsetTagValue[T](tag: TreeNodeTag[T]): Unit
- Definition Classes
- TreeNode
-
lazy val
updateAggregates: Seq[CudfAggregate]
update: first half of the aggregation The sequence of
CudfAggregatemust match the shape ofinputProjections, and care must be taken to ensure that each cuDF aggregate is able to work with the corresponding inputProjection (i.e.update: first half of the aggregation The sequence of
CudfAggregatemust match the shape ofinputProjections, and care must be taken to ensure that each cuDF aggregate is able to work with the corresponding inputProjection (i.e. inputProjection[i] is the input to updateAggregates[i]).- Definition Classes
- GpuMaxMinByBase → GpuAggregateFunction
- val valueExpr: Expression
-
final
def
verboseString(maxFields: Int): String
- Definition Classes
- Expression → TreeNode
-
def
verboseStringWithSuffix(maxFields: Int): String
- Definition Classes
- TreeNode
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
withNewChildren(newChildren: Seq[Expression]): Expression
- Definition Classes
- TreeNode
-
def
withNewChildrenInternal(newChildren: IndexedSeq[Expression]): Expression
- Definition Classes
- ShimExpression → TreeNode