2016-06-28 79 views
1

我正嘗試基於同一數據框的其他列向給定數據框添加一個新列。使用withColumn將一列添加到數據框並調用UDF

圖是字符串布爾圖

以下是我的代碼。

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

我收到編譯錯誤。

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

我正在使用1.5.0 – user1544460

回答

0

我無法使用callUDF,但我通過查詢具有udf來解決它。

從表中選擇col1,col2,udfname(col1,col2)作爲newCol3。 上面會給我新的數據框與新的列,其值基於其他列填充。

0

這真的很晚,但問題很可能是由於您錯過了第二個電話中的錯字。你還需要確保你已經導入了callUDF,但是如果udf工作了,那麼你可能做到了。

相關問題