DoFn

DoFn<InputT, OutputT> is an abstraction of…​FIXME

Demo: @Element

import org.apache.beam.sdk.transforms.DoFn
import org.apache.beam.sdk.transforms.DoFn._
// Int in, Int out
val multiplyBy2 = new DoFn[Int, Int]() {
  @ProcessElement
  def process(@Element e: Int, ctx: ProcessContext): Unit = {
    ctx.output(e * 2)
  }
}

Demo: ProcessContext

import org.apache.beam.sdk.transforms.DoFn
import org.apache.beam.sdk.transforms.DoFn._
// String in, String out
val printlnDoFn = new DoFn[String, String]() {
  @ProcessElement
  def process(ctx: ProcessContext): Unit = {
    val e = ctx.element()
    println(s"[printlnDoFn] >>> $e")
    ctx.output(e)
  }
}