Class/Object

io.smartdatalake.workflow.action

CustomSparkAction

Related Docs: object CustomSparkAction | package action

Permalink

case class CustomSparkAction(id: ActionObjectId, inputIds: Seq[DataObjectId], outputIds: Seq[DataObjectId], transformer: CustomDfsTransformerConfig, breakDataFrameLineage: Boolean = false, persist: Boolean = false, mainInputId: Option[DataObjectId] = None, mainOutputId: Option[DataObjectId] = None, executionMode: Option[ExecutionMode] = None, metricsFailCondition: Option[String] = None, metadata: Option[ActionMetadata] = None, recursiveInputIds: Seq[DataObjectId] = Seq())(implicit instanceRegistry: InstanceRegistry) extends SparkSubFeedsAction with Product with Serializable

Action to transform data according to a custom transformer. Allows to transform multiple input and output dataframes.

inputIds

input DataObject's

outputIds

output DataObject's

transformer

Custom Transformer to transform Seq[DataFrames]

mainInputId

optional selection of main inputId used for execution mode and partition values propagation. Only needed if there are multiple input DataObject's.

mainOutputId

optional selection of main outputId used for execution mode and partition values propagation. Only needed if there are multiple output DataObject's.

executionMode

optional execution mode for this Action

metricsFailCondition

optional spark sql expression evaluated as where-clause against dataframe of metrics. Available columns are dataObjectId, key, value. If there are any rows passing the where clause, a MetricCheckFailed exception is thrown.

recursiveInputIds

output of action that are used as input in the same action

Linear Supertypes
Serializable, Serializable, Product, Equals, SparkSubFeedsAction, SparkAction, Action, SmartDataLakeLogger, DAGNode, ParsableFromConfig[Action], SdlConfigObject, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. CustomSparkAction
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. SparkSubFeedsAction
  7. SparkAction
  8. Action
  9. SmartDataLakeLogger
  10. DAGNode
  11. ParsableFromConfig
  12. SdlConfigObject
  13. AnyRef
  14. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new CustomSparkAction(id: ActionObjectId, inputIds: Seq[DataObjectId], outputIds: Seq[DataObjectId], transformer: CustomDfsTransformerConfig, breakDataFrameLineage: Boolean = false, persist: Boolean = false, mainInputId: Option[DataObjectId] = None, mainOutputId: Option[DataObjectId] = None, executionMode: Option[ExecutionMode] = None, metricsFailCondition: Option[String] = None, metadata: Option[ActionMetadata] = None, recursiveInputIds: Seq[DataObjectId] = Seq())(implicit instanceRegistry: InstanceRegistry)

    Permalink

    inputIds

    input DataObject's

    outputIds

    output DataObject's

    transformer

    Custom Transformer to transform Seq[DataFrames]

    mainInputId

    optional selection of main inputId used for execution mode and partition values propagation. Only needed if there are multiple input DataObject's.

    mainOutputId

    optional selection of main outputId used for execution mode and partition values propagation. Only needed if there are multiple output DataObject's.

    executionMode

    optional execution mode for this Action

    metricsFailCondition

    optional spark sql expression evaluated as where-clause against dataframe of metrics. Available columns are dataObjectId, key, value. If there are any rows passing the where clause, a MetricCheckFailed exception is thrown.

    recursiveInputIds

    output of action that are used as input in the same action

Value Members

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

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

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. def addRuntimeEvent(phase: ExecutionPhase, state: RuntimeEventState, msg: Option[String] = None, results: Seq[SubFeed] = Seq()): Unit

    Permalink

    Adds an action event

    Adds an action event

    Definition Classes
    Action
  5. def applyAdditional(subFeed: SparkSubFeed, additional: (SparkSubFeed, Option[DataFrame], Seq[String], LocalDateTime) ⇒ SparkSubFeed, output: TableDataObject)(implicit session: SparkSession, context: ActionPipelineContext): SparkSubFeed

    Permalink

    applies an optional additional transformation

    applies an optional additional transformation

    Definition Classes
    SparkAction
  6. def applyBlackWhitelists(subFeed: SparkSubFeed, columnBlacklist: Option[Seq[String]], columnWhitelist: Option[Seq[String]]): SparkSubFeed

    Permalink

    applies columnBlackList and columnWhitelist

    applies columnBlackList and columnWhitelist

    Definition Classes
    SparkAction
  7. def applyCastDecimal2IntegralFloat(subFeed: SparkSubFeed): SparkSubFeed

    Permalink

    applies type casting decimal -> integral/float

    applies type casting decimal -> integral/float

    Definition Classes
    SparkAction
  8. def applyCustomTransformation(inputSubFeed: SparkSubFeed, transformer: Option[CustomDfTransformerConfig])(implicit session: SparkSession): SparkSubFeed

    Permalink

    applies the transformers

    applies the transformers

    Definition Classes
    SparkAction
  9. def applyFilter(subFeed: SparkSubFeed, filterClauseExpr: Option[Column]): SparkSubFeed

    Permalink

    applies filterClauseExpr

    applies filterClauseExpr

    Definition Classes
    SparkAction
  10. def applyTransformations(inputSubFeed: SparkSubFeed, transformer: Option[CustomDfTransformerConfig], columnBlacklist: Option[Seq[String]], columnWhitelist: Option[Seq[String]], standardizeDatatypes: Boolean, output: DataObject, additional: Option[(SparkSubFeed, Option[DataFrame], Seq[String], LocalDateTime) ⇒ SparkSubFeed], filterClauseExpr: Option[Column] = None)(implicit session: SparkSession, context: ActionPipelineContext): SparkSubFeed

    Permalink

    applies all the transformations above

    applies all the transformations above

    Definition Classes
    SparkAction
  11. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  12. val breakDataFrameLineage: Boolean

    Permalink

    Stop propagating input DataFrame through action and instead get a new DataFrame from DataObject.

    Stop propagating input DataFrame through action and instead get a new DataFrame from DataObject. This can help to save memory and performance if the input DataFrame includes many transformations from previous Actions. The new DataFrame will be initialized according to the SubFeed's partitionValues.

    Definition Classes
    CustomSparkAction → SparkAction
  13. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  14. def enableRuntimeMetrics(): Unit

    Permalink

    Runtime metrics

    Runtime metrics

    Note: runtime metrics are disabled by default, because they are only collected when running Actions from an ActionDAG. This is not the case for Tests or other use cases. If enabled exceptions are thrown if metrics are not found.

    Definition Classes
    Action
  15. def enrichSubFeedDataFrame(input: DataObject with CanCreateDataFrame, subFeed: SparkSubFeed, phase: ExecutionPhase)(implicit session: SparkSession, context: ActionPipelineContext): SparkSubFeed

    Permalink

    Enriches SparkSubFeed with DataFrame if not existing

    Enriches SparkSubFeed with DataFrame if not existing

    input

    input data object.

    subFeed

    input SubFeed.

    Definition Classes
    SparkAction
  16. def enrichSubFeedsDataFrame(inputs: Seq[DataObject with CanCreateDataFrame], subFeeds: Seq[SparkSubFeed])(implicit session: SparkSession, context: ActionPipelineContext): Seq[SparkSubFeed]

    Permalink

    Enriches SparkSubFeeds with DataFrame if not existing

    Enriches SparkSubFeeds with DataFrame if not existing

    inputs

    input data objects.

    subFeeds

    input SubFeeds.

    Attributes
    protected
    Definition Classes
    SparkSubFeedsAction
  17. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  18. final def exec(subFeeds: Seq[SubFeed])(implicit session: SparkSession, context: ActionPipelineContext): Seq[SubFeed]

    Permalink

    Action.exec implementation

    Action.exec implementation

    subFeeds

    SparkSubFeed's to be processed

    returns

    processed SparkSubFeed's

    Definition Classes
    SparkSubFeedsAction → Action
  19. val executionMode: Option[ExecutionMode]

    Permalink

    optional execution mode for this Action

    optional execution mode for this Action

    Definition Classes
    CustomSparkAction → SparkAction
  20. def factory: FromConfigFactory[Action]

    Permalink

    Returns the factory that can parse this type (that is, type CO).

    Returns the factory that can parse this type (that is, type CO).

    Typically, implementations of this method should return the companion object of the implementing class. The companion object in turn should implement FromConfigFactory.

    returns

    the factory (object) for this class.

    Definition Classes
    CustomSparkAction → ParsableFromConfig
  21. def filterDataFrame(df: DataFrame, partitionValues: Seq[PartitionValues], genericFilter: Option[Column]): DataFrame

    Permalink

    Filter DataFrame with given partition values

    Filter DataFrame with given partition values

    df

    DataFrame to filter

    partitionValues

    partition values to use as filter condition

    genericFilter

    filter expression to apply

    returns

    filtered DataFrame

    Definition Classes
    SparkAction
  22. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  23. def getAllLatestMetrics: Map[DataObjectId, Option[ActionMetrics]]

    Permalink
    Definition Classes
    Action
  24. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  25. def getFinalMetrics(dataObjectId: DataObjectId): Option[ActionMetrics]

    Permalink
    Definition Classes
    Action
  26. def getInputDataObject[T <: DataObject](id: DataObjectId)(implicit arg0: ClassTag[T], arg1: scala.reflect.api.JavaUniverse.TypeTag[T], registry: InstanceRegistry): T

    Permalink
    Attributes
    protected
    Definition Classes
    Action
  27. def getLatestMetrics(dataObjectId: DataObjectId): Option[ActionMetrics]

    Permalink
    Definition Classes
    Action
  28. def getOutputDataObject[T <: DataObject](id: DataObjectId)(implicit arg0: ClassTag[T], arg1: scala.reflect.api.JavaUniverse.TypeTag[T], registry: InstanceRegistry): T

    Permalink
    Attributes
    protected
    Definition Classes
    Action
  29. def getRuntimeInfo: Option[RuntimeInfo]

    Permalink

    get latest runtime information for this action

    get latest runtime information for this action

    Definition Classes
    Action
  30. val id: ActionObjectId

    Permalink

    A unique identifier for this instance.

    A unique identifier for this instance.

    Definition Classes
    CustomSparkAction → Action → SdlConfigObject
  31. final def init(subFeeds: Seq[SubFeed])(implicit session: SparkSession, context: ActionPipelineContext): Seq[SubFeed]

    Permalink

    Generic init implementation for Action.init

    Generic init implementation for Action.init

    subFeeds

    SparkSubFeed's to be processed

    returns

    processed SparkSubFeed's

    Definition Classes
    SparkSubFeedsAction → Action
  32. val inputIds: Seq[DataObjectId]

    Permalink

    input DataObject's

  33. val inputs: Seq[DataObject with CanCreateDataFrame]

    Permalink

    Input DataObjects To be implemented by subclasses

    Input DataObjects To be implemented by subclasses

    Definition Classes
    CustomSparkActionSparkSubFeedsAction → Action
  34. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  35. lazy val logger: Logger

    Permalink
    Attributes
    protected
    Definition Classes
    SmartDataLakeLogger
  36. lazy val mainInput: DataObject with CanCreateDataFrame

    Permalink
    Definition Classes
    SparkSubFeedsAction
  37. val mainInputId: Option[DataObjectId]

    Permalink

    optional selection of main inputId used for execution mode and partition values propagation.

    optional selection of main inputId used for execution mode and partition values propagation. Only needed if there are multiple input DataObject's.

    Definition Classes
    CustomSparkActionSparkSubFeedsAction
  38. lazy val mainOutput: DataObject with CanWriteDataFrame

    Permalink
    Definition Classes
    SparkSubFeedsAction
  39. val mainOutputId: Option[DataObjectId]

    Permalink

    optional selection of main outputId used for execution mode and partition values propagation.

    optional selection of main outputId used for execution mode and partition values propagation. Only needed if there are multiple output DataObject's.

    Definition Classes
    CustomSparkActionSparkSubFeedsAction
  40. val metadata: Option[ActionMetadata]

    Permalink

    Additional metadata for the Action

    Additional metadata for the Action

    Definition Classes
    CustomSparkAction → Action
  41. val metricsFailCondition: Option[String]

    Permalink

    optional spark sql expression evaluated as where-clause against dataframe of metrics.

    optional spark sql expression evaluated as where-clause against dataframe of metrics. Available columns are dataObjectId, key, value. If there are any rows passing the where clause, a MetricCheckFailed exception is thrown.

    Definition Classes
    CustomSparkAction → Action
  42. def multiTransformSubfeed(subFeed: SparkSubFeed, transformers: Seq[(DataFrame) ⇒ DataFrame]): SparkSubFeed

    Permalink

    applies multiple transformations to a sequence of subfeeds

    applies multiple transformations to a sequence of subfeeds

    Definition Classes
    SparkAction
  43. def multiTransformSubfeeds(subFeeds: Seq[SparkSubFeed], transformers: Seq[(DataFrame) ⇒ DataFrame]): Seq[SparkSubFeed]

    Permalink

    applies multiple transformations to a sequence of subfeeds

    applies multiple transformations to a sequence of subfeeds

    Definition Classes
    SparkAction
  44. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  45. def nodeId: String

    Permalink

    provide an implementation of the DAG node id

    provide an implementation of the DAG node id

    Definition Classes
    Action → DAGNode
  46. final def notify(): Unit

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

    Permalink
    Definition Classes
    AnyRef
  48. def onRuntimeMetrics(dataObjectId: Option[DataObjectId], metrics: ActionMetrics): Unit

    Permalink
    Definition Classes
    Action
  49. val outputIds: Seq[DataObjectId]

    Permalink

    output DataObject's

  50. val outputs: Seq[DataObject with CanWriteDataFrame]

    Permalink

    Output DataObjects To be implemented by subclasses

    Output DataObjects To be implemented by subclasses

    Definition Classes
    CustomSparkActionSparkSubFeedsAction → Action
  51. val persist: Boolean

    Permalink

    Force persisting DataFrame on Disk.

    Force persisting DataFrame on Disk. This helps to reduce memory needed for caching the DataFrame content and can serve as a recovery point in case an task get's lost.

    Definition Classes
    CustomSparkAction → SparkAction
  52. def postExec(inputSubFeed: Seq[SubFeed], outputSubFeed: Seq[SubFeed])(implicit session: SparkSession, context: ActionPipelineContext): Unit

    Permalink

    Executes operations needed after executing an action.

    Executes operations needed after executing an action. In this step any phase on Input- or Output-DataObjects needed after the main task is executed, e.g. JdbcTableDataObjects postWriteSql or CopyActions deleteInputData.

    Definition Classes
    Action
  53. def preExec(subFeeds: Seq[SubFeed])(implicit session: SparkSession, context: ActionPipelineContext): Unit

    Permalink

    Executes operations needed before executing an action.

    Executes operations needed before executing an action. In this step any phase on Input- or Output-DataObjects needed before the main task is executed, e.g. JdbcTableDataObjects preWriteSql

    Definition Classes
    Action
  54. def prepare(implicit session: SparkSession, context: ActionPipelineContext): Unit

    Permalink

    Prepare DataObjects prerequisites.

    Prepare DataObjects prerequisites. In this step preconditions are prepared & tested: - connections can be created - needed structures exist, e.g Kafka topic or Jdbc table

    This runs during the "prepare" phase of the DAG.

    Definition Classes
    SparkAction → Action
  55. def prepareInputSubFeed(subFeed: SparkSubFeed, input: DataObject with CanCreateDataFrame)(implicit session: SparkSession, context: ActionPipelineContext): SparkSubFeed

    Permalink

    Applies changes to a SubFeed from a previous action in order to be used as input for this actions transformation.

    Applies changes to a SubFeed from a previous action in order to be used as input for this actions transformation.

    Definition Classes
    SparkAction
  56. val recursiveInputIds: Seq[DataObjectId]

    Permalink

    output of action that are used as input in the same action

  57. val recursiveInputs: Seq[DataObject with CanCreateDataFrame]

    Permalink

    Recursive Inputs are DataObjects that are used as Output and Input in the same action This is usually prohibited as it creates loops in the DAG.

    Recursive Inputs are DataObjects that are used as Output and Input in the same action This is usually prohibited as it creates loops in the DAG. In special cases this makes sense, i.e. when building a complex delta logic

    Definition Classes
    CustomSparkActionSparkSubFeedsAction → Action
  58. def reset(): Unit

    Permalink

    Resets the runtime state of this Action This is mainly used for testing

    Resets the runtime state of this Action This is mainly used for testing

    Definition Classes
    Action
  59. def setSparkJobMetadata(operation: Option[String] = None)(implicit session: SparkSession): Unit

    Permalink

    Sets the util job description for better traceability in the Spark UI

    Sets the util job description for better traceability in the Spark UI

    Note: This sets Spark local properties, which are propagated to the respective executor tasks. We rely on this to match metrics back to Actions and DataObjects. As writing to a DataObject on the Driver happens uninterrupted in the same exclusive thread, this is suitable.

    operation

    phase description (be short...)

    Definition Classes
    Action
  60. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  61. final def toString(): String

    Permalink

    This is displayed in ascii graph visualization

    This is displayed in ascii graph visualization

    Definition Classes
    Action → AnyRef → Any
  62. def toStringMedium: String

    Permalink
    Definition Classes
    Action
  63. def toStringShort: String

    Permalink
    Definition Classes
    Action
  64. def transform(subFeeds: Seq[SparkSubFeed])(implicit session: SparkSession, context: ActionPipelineContext): Seq[SparkSubFeed]

    Permalink

    Transform SparkSubFeed's.

    Transform SparkSubFeed's. To be implemented by subclasses.

    subFeeds

    SparkSubFeed's to be transformed

    returns

    transformed SparkSubFeed's

    Definition Classes
    CustomSparkActionSparkSubFeedsAction
  65. def transformSubfeeds(subFeeds: Seq[SparkSubFeed], transformer: (DataFrame) ⇒ DataFrame): Seq[SparkSubFeed]

    Permalink

    transform sequence of subfeeds

    transform sequence of subfeeds

    Definition Classes
    SparkAction
  66. val transformer: CustomDfsTransformerConfig

    Permalink

    Custom Transformer to transform Seq[DataFrames]

  67. def updateSubFeedAfterWrite(subFeed: SparkSubFeed)(implicit session: SparkSession, context: ActionPipelineContext): SparkSubFeed

    Permalink
    Definition Classes
    SparkAction
  68. def validateAndUpdateSubFeedPartitionValues(output: DataObject, subFeed: SparkSubFeed)(implicit session: SparkSession): SparkSubFeed

    Permalink

    Updates the partition values of a SubFeed to the partition columns of an output, removing not existing columns from the partition values.

    Updates the partition values of a SubFeed to the partition columns of an output, removing not existing columns from the partition values. Further the transformed DataFrame is validated to have the output's partition columns included.

    output

    output DataObject

    subFeed

    SubFeed with transformed DataFrame

    returns

    SubFeed with updated partition values.

    Definition Classes
    SparkAction
  69. def validateDataFrameContainsCols(df: DataFrame, columns: Seq[String], debugName: String): Unit

    Permalink

    Validate that DataFrame contains a given list of columns, throwing an exception otherwise.

    Validate that DataFrame contains a given list of columns, throwing an exception otherwise.

    df

    DataFrame to validate

    columns

    Columns that must exist in DataFrame

    debugName

    name to mention in exception

    Definition Classes
    SparkAction
  70. final def wait(): Unit

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

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

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  73. def writeSubFeed(subFeed: SparkSubFeed, output: DataObject with CanWriteDataFrame)(implicit session: SparkSession): Boolean

    Permalink

    writes subfeed to output respecting given execution mode

    writes subfeed to output respecting given execution mode

    returns

    true if no data was transfered, otherwise false

    Definition Classes
    SparkAction

Inherited from Serializable

Inherited from Serializable

Inherited from Product

Inherited from Equals

Inherited from SparkSubFeedsAction

Inherited from SparkAction

Inherited from Action

Inherited from SmartDataLakeLogger

Inherited from DAGNode

Inherited from ParsableFromConfig[Action]

Inherited from SdlConfigObject

Inherited from AnyRef

Inherited from Any

Ungrouped