使用withColumn和callUDF将列附加到数据框

时间:2016-06-28 02:21:05

标签: java apache-spark spark-dataframe udf

我正在尝试根据同一数据帧的其他列向给定的数据框添加新列。

map是一个String-Boolean映射

以下是我的代码。

    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

2 个答案:

答案 0 :(得分:0)

我无法使用callUDF,但我通过查询udf来解决它。

从表中选择col1,col2,udfname(col1,col2)作为newCol3。 上面将为我提供新数据框,其中包含基于其他列填充其值的新列。

答案 1 :(得分:0)

现在已经很晚了,但问题很可能是由于你错过了第二次打电话的错字。您还需要确保已导入callUDF,但如果udf有效,那么您可能会这样做。