2017-02-17 1 views
3

Es ist DataSet mit Spalte fest, ich bin eine andere Spalte zu diesem Datensatz hinzugefügt - firm_id hier Beispiel:Apache Spark. UDF-Spalte basiert auf einer anderen Spalte, ohne ihren Namen als Argument zu übergeben.

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")) 

Gibt es eine Möglichkeit vorbei $"firm" als Argument zu beseitigen (diese Spalte ist immer vorhanden in DS). Ich suche etwas dafür:

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

Antwort

4

Sie könnten die Spalte liefern sie verwenden werden, wenn Sie die UDF definieren.

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

// Usage in dataset 
val ds = dataset.withColumn("newColName",someUdf) 
+0

Das hat funktioniert, danke! – cingulata

Verwandte Themen