Функции Spark SQL / выражение используют широковещательную переменную - PullRequest
0 голосов
/ 18 мая 2019

Я думаю о реализации выражения в Spark для выполнения преобразования (в настоящее время UDF), но я хочу, чтобы это выражение могло использовать большой сгенерированный драйвером TreeMap (собирающийся выполнить поиск по диапазону).

Можно ли использовать в выражениях широковещательные переменные, есть ли недостатки? Есть ли лучшие идеи о том, как использовать передаваемую переменную внутри выражения?

//Broadcasted somewhere else
val broadcastedVariable = sparkSession.sparkContext.broadcast(new TreeMap(...))

case class GenerateMyItem(timeZoneId: Option[String] = None)
  extends LeafExpression with TimeZoneAwareExpression with CodegenFallback {

  def this() = this(None)

  override def foldable: Boolean = true
  override def nullable: Boolean = false

  override def dataType: DataType = DateType

  override def withTimeZone(timeZoneId: String): TimeZoneAwareExpression =
    copy(timeZoneId = Option(timeZoneId))

  override def eval(input: InternalRow): Any = {
    broadcastedVariable.value(0) //Lets assume I want to return the broadcast variable
  } 

  override def prettyName: String = "current_date"
}

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...