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

Posted

技术标签:

【中文标题】使用 withColumn 和 callUDF 将列附加到数据框【英文标题】:Append a column to dataframe using withColumn and callUDF 【发布时间】:2016-06-28 02:21:05 【问题描述】:

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

map 是一个字符串布尔映射

下面是我的代码。

    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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

这真的很晚了,但问题很可能是由于您错过了通话中的第二个 l 造成的拼写错误。您还需要确保您已导入 callUDF,但如果 udf 工作,那么您可能做到了。

【讨论】:

以上是关于使用 withColumn 和 callUDF 将列附加到数据框的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 callUDF() 调用 UDF - Spark Java

使用 callUDF 创建链接 UDF 调用的方法

如何使用 withColumn 将额外的参数传递给 UDF

将日期字符串传递到 withColumn

在 spark scala 中为 withcolumn 编写通用函数

在 Pyspark 中的多个列上使用相同的函数重复调用 withColumn()