2016-06-28 12 views
1

Ich versuche, eine neue Spalte zu einem bestimmten Datenrahmen basierend auf den anderen Spalten desselben Datenrahmens hinzuzufügen.Anfügen einer Spalte an Dataframe mithilfe von mitColumn und callUDF

Karte ist ein String-Boolean Karte

Unten ist mein Code.

hiveContext.udf().register("udfname", new UDF2<String, String, Boolean>() { 
    @Override 
    public Boolean call(String col1, String col2) throws Exception { 
      return map.get(col1+col2); 
     } 
    }, DataTypes.BooleanType); 

    DataFrame newDF = df.withColumn("newcol", calUDF("udfname" ,df.col("col1"),df.col("col2"))); 

Ich erhalte einen Kompilierungsfehler.

The method calUDF(String, Column, Column) is undefined for the type myclass 
+0

Ich benutze 1.5.0 – user1544460

Antwort

0

Ich konnte callUDF nicht verwenden, aber ich löste es, indem ich eine Abfrage mit dem UDF machte.

Wählen Sie col1, col2, udfname (col1, col2) als newCol3 aus der Tabelle. Oben erhalten Sie einen neuen Datenrahmen mit einer neuen Spalte, dessen Wert basierend auf anderen Spalten aufgefüllt wird.

0

Dies ist wirklich spät, aber das Problem lag wahrscheinlich an einem Tippfehler, da Sie den zweiten l in Anruf fehlten. Sie müssten auch sicherstellen, dass Sie CallUDF importiert haben, aber wenn UDF funktioniert, dann haben Sie wahrscheinlich.