Apache Spark. Столбец UDF на основе другого столбца без передачи его имени в качестве аргумента.

Есть DataSet с фирмой столбца, я добавляю еще один столбец в этот DataSet - вот пример firm_id:

private val firms: mutable.Map[String, Integer] = ...
private val firmIdFromCode: (String => Integer) = (code: String) => firms(code)
val firm_id_by_code: UserDefinedFunction = udf(firmIdFromCode)
...
val ds = dataset.withColumn("firm_id", firm_id_by_code($"firm"))

Есть ли способ исключить передачу $"firm" в качестве аргумента (этот столбец всегда присутствует в DS). Я что-то ищу для этого:

val ds = dataset.withColumn("firm_id", firm_id_by_code)

person max.kuzmentsov    schedule 17.02.2017    source источник


Ответы (1)


Вы можете указать столбец, который будет использоваться при определении udf.

val someUdf = udf{ /*udf code*/}.apply($"colName")

// Usage in dataset
val ds = dataset.withColumn("newColName",someUdf)
person Davis Broda    schedule 17.02.2017