trait GpuRunningWindowFunction extends Expression with GpuWindowFunction
A window function that is optimized for running windows using the cudf scan and group by scan operations. In some cases, like row number and rank, Spark only supports them as running window operations. This is why it directly extends GpuWindowFunction because it can be a stand alone window function. In all other cases it should be combined with GpuAggregateWindowFunction to provide a fully functional window operation. It should be noted that WindowExec tries to deduplicate input projections and aggregations to reduce memory usage. Because of tracking requirements it is required that there is a one to one relationship between an input projection and a corresponding aggregation.
- Alphabetic
- By Inheritance
- GpuRunningWindowFunction
- GpuWindowFunction
- ShimExpression
- GpuUnevaluable
- GpuExpression
- Arm
- Expression
- TreeNode
- TreePatternBits
- Product
- Equals
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Abstract Value Members
-
abstract
def
canEqual(that: Any): Boolean
- Definition Classes
- Equals
-
abstract
def
children: Seq[Expression]
- Definition Classes
- TreeNode
-
abstract
def
dataType: DataType
- Definition Classes
- Expression
-
abstract
def
groupByScanAggregation(isRunningBatched: Boolean): Seq[AggAndReplace[GroupByScanAggregation]]
Get the aggregations to perform on the results of
groupByScanInputProjection.Get the aggregations to perform on the results of
groupByScanInputProjection. The aggregations will be zipped with the values to produce the output.- isRunningBatched
is this for a batched running window that will use a fixer or not?
- returns
the aggregations to perform as a group by scan.
-
abstract
def
groupByScanInputProjection(isRunningBatched: Boolean): Seq[Expression]
Get the input projections for a group by scan.
Get the input projections for a group by scan. This corresponds to a running window with a partition by clause. The partition keys will be used as the grouping keys.
- isRunningBatched
is this for a batched running window that will use a fixer or not?
- returns
the input expressions that will be aggregated using the result from
groupByScanAggregation
-
abstract
def
nullable: Boolean
- Definition Classes
- Expression
-
abstract
def
productArity: Int
- Definition Classes
- Product
-
abstract
def
productElement(n: Int): Any
- Definition Classes
- Product
-
abstract
def
scanAggregation(isRunningBatched: Boolean): Seq[AggAndReplace[ScanAggregation]]
Get the aggregations to perform on the results of
scanInputProjection.Get the aggregations to perform on the results of
scanInputProjection. The aggregations will be zipped with the values to produce the output.- isRunningBatched
is this for a batched running window that will use a fixer or not?
- returns
the aggregations to perform as a group by scan.
-
abstract
def
scanInputProjection(isRunningBatched: Boolean): Seq[Expression]
Get the input projections for a scan.
Get the input projections for a scan. This corresponds to a running window without a partition by clause.
- isRunningBatched
is this for a batched running window that will use a fixer or not?
- returns
the input expressions that will be aggregated using the result from
scanAggregation
Concrete 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
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
childrenResolved: Boolean
- Definition Classes
- Expression
-
def
clone(): Expression
- Definition Classes
- TreeNode → AnyRef
-
def
closeOnExcept[T <: AutoCloseable, V](r: Option[T])(block: (Option[T]) ⇒ V): V
Executes the provided code block, closing the resources only if an exception occurs
Executes the provided code block, closing the resources only if an exception occurs
- Definition Classes
- Arm
-
def
closeOnExcept[T <: AutoCloseable, V](r: ArrayBuffer[T])(block: (ArrayBuffer[T]) ⇒ V): V
Executes the provided code block, closing the resources only if an exception occurs
Executes the provided code block, closing the resources only if an exception occurs
- Definition Classes
- Arm
-
def
closeOnExcept[T <: AutoCloseable, V](r: Array[T])(block: (Array[T]) ⇒ V): V
Executes the provided code block, closing the resources only if an exception occurs
Executes the provided code block, closing the resources only if an exception occurs
- Definition Classes
- Arm
-
def
closeOnExcept[T <: AutoCloseable, V](r: Seq[T])(block: (Seq[T]) ⇒ V): V
Executes the provided code block, closing the resources only if an exception occurs
Executes the provided code block, closing the resources only if an exception occurs
- Definition Classes
- Arm
-
def
closeOnExcept[T <: AutoCloseable, V](r: T)(block: (T) ⇒ V): V
Executes the provided code block, closing the resource only if an exception occurs
Executes the provided code block, closing the resource only if an exception occurs
- Definition Classes
- Arm
-
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): 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
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
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
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
-
final
def
doGenCode(ctx: CodegenContext, ev: ExprCode): ExprCode
- Definition Classes
- GpuExpression → Expression
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
eval(input: InternalRow = null): Any
- Definition Classes
- GpuExpression → Expression
-
def
fastEquals(other: TreeNode[_]): Boolean
- Definition Classes
- TreeNode
-
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
-
def
foldable: Boolean
- Definition Classes
- Expression
-
def
foreach(f: (Expression) ⇒ Unit): Unit
- Definition Classes
- TreeNode
-
def
foreachUp(f: (Expression) ⇒ Unit): Unit
- Definition Classes
- TreeNode
-
def
freeOnExcept[T <: RapidsBuffer, V](r: T)(block: (T) ⇒ V): V
Executes the provided code block, freeing the RapidsBuffer only if an exception occurs
Executes the provided code block, freeing the RapidsBuffer only if an exception occurs
- Definition Classes
- Arm
-
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() @HotSpotIntrinsicCandidate()
-
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
-
def
innerChildren: Seq[TreeNode[_]]
- Definition Classes
- TreeNode
-
def
isGroupByScanSupported: Boolean
Should a group by scan be run or not.
Should a group by scan be run or not. This should never return false unless this is also an instance of
GpuAggregateWindowFunctionso the window code can fall back to it for computation. -
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
isRuleIneffective(ruleId: RuleId): Boolean
- Attributes
- protected
- Definition Classes
- TreeNode
-
def
isScanSupported: Boolean
Should a scan be run or not.
Should a scan be run or not. This should never return false unless this is also an instance of
GpuAggregateWindowFunctionso the window code can fall back to it for computation. -
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
-
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() @HotSpotIntrinsicCandidate()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
-
def
numberedTreeString: String
- Definition Classes
- TreeNode
-
val
origin: Origin
- Definition Classes
- TreeNode
-
def
otherCopyArgs: Seq[AnyRef]
- Attributes
- protected
- Definition Classes
- TreeNode
-
def
p(number: Int): Expression
- Definition Classes
- TreeNode
-
def
prettyJson: String
- Definition Classes
- TreeNode
-
def
prettyName: String
- Definition Classes
- Expression
-
def
productIterator: Iterator[Any]
- Definition Classes
- Product
-
def
productPrefix: String
- Definition Classes
- Product
-
def
references: AttributeSet
- Definition Classes
- Expression
-
lazy val
resolved: Boolean
- Definition Classes
- Expression
-
def
scanCombine(isRunningBatched: Boolean, cols: Seq[ColumnVector]): ColumnVector
Provides a way to combine the result of multiple aggregations into a final value.
Provides a way to combine the result of multiple aggregations into a final value. By default it requires that there is a single aggregation and works as just a pass through.
- isRunningBatched
is this for a batched running window that will use a fixer or not?
- cols
the columns to be combined
- returns
the result of combining these together.
-
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: String
- Definition Classes
- Expression
-
def
stringArgs: Iterator[Any]
- Attributes
- protected
- Definition Classes
- TreeNode
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
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
-
final
def
verboseString(maxFields: Int): String
- Definition Classes
- Expression → TreeNode
-
def
verboseStringWithSuffix(maxFields: Int): String
- Definition Classes
- TreeNode
-
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
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
withNewChildren(newChildren: Seq[Expression]): Expression
- Definition Classes
- TreeNode
-
def
withNewChildrenInternal(newChildren: IndexedSeq[Expression]): Expression
- Definition Classes
- ShimExpression → TreeNode
-
def
withResource[T <: AutoCloseable, V](h: CloseableHolder[T])(block: (CloseableHolder[T]) ⇒ V): V
Executes the provided code block and then closes the resource
Executes the provided code block and then closes the resource
- Definition Classes
- Arm
-
def
withResource[T <: AutoCloseable, V](r: ArrayBuffer[T])(block: (ArrayBuffer[T]) ⇒ V): V
Executes the provided code block and then closes the array buffer of resources
Executes the provided code block and then closes the array buffer of resources
- Definition Classes
- Arm
-
def
withResource[T <: AutoCloseable, V](r: Array[T])(block: (Array[T]) ⇒ V): V
Executes the provided code block and then closes the array of resources
Executes the provided code block and then closes the array of resources
- Definition Classes
- Arm
-
def
withResource[T <: AutoCloseable, V](r: Seq[T])(block: (Seq[T]) ⇒ V): V
Executes the provided code block and then closes the sequence of resources
Executes the provided code block and then closes the sequence of resources
- Definition Classes
- Arm
-
def
withResource[T <: AutoCloseable, V](r: Option[T])(block: (Option[T]) ⇒ V): V
Executes the provided code block and then closes the Option[resource]
Executes the provided code block and then closes the Option[resource]
- Definition Classes
- Arm
-
def
withResource[T <: AutoCloseable, V](r: T)(block: (T) ⇒ V): V
Executes the provided code block and then closes the resource
Executes the provided code block and then closes the resource
- Definition Classes
- Arm
-
def
withResourceIfAllowed[T, V](r: T)(block: (T) ⇒ V): V
Executes the provided code block and then closes the value if it is AutoCloseable
Executes the provided code block and then closes the value if it is AutoCloseable
- Definition Classes
- Arm