terminate(): TraversableOnce[InternalRow] = Nil
Generator Contract — Expressions to Generate Zero Or More Rows (aka Lateral Views)
Generator
is a contract for Catalyst expressions that can produce zero or more rows given a single input row.
Note
|
Generator corresponds to SQL’s LATERAL VIEW.
|
dataType
in Generator
is simply an ArrayType of elementSchema.
Generator
supports Java code generation (aka whole-stage codegen) conditionally, i.e. only when a physical operator is not marked as CodegenFallback.
Generator
uses terminate
to inform that there are no more rows to process, clean up code, and additional rows can be made here.
Name | Description | ||
---|---|---|---|
Corresponds to |
|||
Represents an unresolved generator. Created when
|
|||
Used exclusively in the deprecated |
Note
|
You can only have one generator per select clause that is enforced by ExtractGenerator logical evaluation rule, e.g.
If you want to have more than one generator in a structured query you should use
|
Generator Contract
package org.apache.spark.sql.catalyst.expressions
trait Generator extends Expression {
// only required methods that have no implementation
def elementSchema: StructType
def eval(input: InternalRow): TraversableOnce[InternalRow]
}
Method | Description |
---|---|
Schema of the elements to be generated |
|