trait SparkSessionExtensionsProvider extends (SparkSessionExtensions) ⇒ Unit
:: Unstable ::
Base trait for implementations used by SparkSessionExtensions
For example, now we have an external function named Age
to register as an extension for SparkSession:
package org.apache.spark.examples.extensions import org.apache.spark.sql.catalyst.expressions.{CurrentDate, Expression, RuntimeReplaceable, SubtractDates} case class Age(birthday: Expression, child: Expression) extends RuntimeReplaceable { def this(birthday: Expression) = this(birthday, SubtractDates(CurrentDate(), birthday)) override def exprsReplaced: Seq[Expression] = Seq(birthday) override protected def withNewChildInternal(newChild: Expression): Expression = copy(newChild) }
We need to create our extension which inherits SparkSessionExtensionsProvider Example:
package org.apache.spark.examples.extensions import org.apache.spark.sql.{SparkSessionExtensions, SparkSessionExtensionsProvider} import org.apache.spark.sql.catalyst.FunctionIdentifier import org.apache.spark.sql.catalyst.expressions.{Expression, ExpressionInfo} class MyExtensions extends SparkSessionExtensionsProvider { override def apply(v1: SparkSessionExtensions): Unit = { v1.injectFunction( (new FunctionIdentifier("age"), new ExpressionInfo(classOf[Age].getName, "age"), (children: Seq[Expression]) => new Age(children.head))) } }
Then, we can inject MyExtensions
in three ways,
- withExtensions of SparkSession.Builder
- Config - spark.sql.extensions
- java.util.ServiceLoader - Add to src/main/resources/META-INF/services/org.apache.spark.sql.SparkSessionExtensionsProvider
- Annotations
- @DeveloperApi() @Unstable() @Since( "3.2.0" )
- Source
- SparkSessionExtensionsProvider.scala
- Since
3.2.0
- See also
java.util.ServiceLoader
- Alphabetic
- By Inheritance
- SparkSessionExtensionsProvider
- Function1
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Abstract Value Members
-
abstract
def
apply(v1: SparkSessionExtensions): Unit
- Definition Classes
- Function1
Concrete Value Members
-
def
andThen[A](g: (Unit) ⇒ A): (SparkSessionExtensions) ⇒ A
- Definition Classes
- Function1
- Annotations
- @unspecialized()
-
def
compose[A](g: (A) ⇒ SparkSessionExtensions): (A) ⇒ Unit
- Definition Classes
- Function1
- Annotations
- @unspecialized()
-
def
toString(): String
- Definition Classes
- Function1 → AnyRef → Any