2017-03-15 3 views
1

Ich habe ein Schema und einen Namen von Spalten, auf die UDF angewendet werden soll. Name der Spalten sind Benutzereingaben und sie können sich in Zahlen für jede Eingabe unterscheiden. Gibt es eine Möglichkeit, UDFs auf N Spalten im Datenrahmen anzuwenden?Wenden Sie UDF dynamisch auf 1 bis N Spalten von N Spalten im Datenrahmen an

Der Versuch, dies zu erreichen. für Schema mit sagen col1, col2, col3, col4, COL5

DataFrame newDF = df.withColumn("col2", callUDF("test", (df.col("col2")))); 
    or 
    DataFrame newDF = df.withColumn("col2", callUDF("test", (df.col("col2")))) 
       .withColumn("col3", callUDF("test", (df.col("col3")))); 
    or 
    DataFrame newDF = df.withColumn("col2", callUDF("test", (df.col("col1")))) 
       .withColumn("col3", callUDF("test", (df.col("col3")))) 
       .withColumn("col5", callUDF("test", (df.col("col5")))) 
    or for N columns. 

Irgendwelche Ideen?

+0

Überprüfen Sie diese http://stackoverflow.com/questions/34037889/apply-same-function-to-all-fields-of-spark-datafemare-row –

Antwort

0

Ich schrieb schließlich Code, um SPARK SQL-Abfrage dynamisch zu generieren, um UDFs auf 1 bis N Spalten anzuwenden. Registrieren Sie dann den Eingabedatenrahmen als temporäre Tabelle und verwenden Sie generierte Abfrage.

+0

Möchten Sie den Code teilen? Oder deine Antwort nützt nichts. –

Verwandte Themen