首页 > 解决方案 > 错误:类型不匹配::found :Boolean:: required: org.apache.spark.sql.Column issue::Spark/Scala

问题描述

我在 spark Df1 和 Df2 中有 2 个 Dataframes 我基于一个公共列(即 Id)加入这 2 个 Dataframes,然后添加一个额外的列结果并检查多个列,如果任何列数据匹配,则我需要插入新的列匹配,如果没有条件匹配,则需要在该列中作为“不匹配”传递。我正在写下面的代码。

    df1.join(df2,df1("id") === df2("id"))
    .withColumn("Result",when(df1("adhar_no") === df2("adhar_no") || 
    when(df1("pan_no") === df2("pan_no") || 
    when(df1("Voter_id") === df2("Voter_id") ||  
    when(df1("DL_no") === df2("DL_no"),"Matched"))))
   .otherwise("Not Matched"))

但得到以下错误消息。

    error: type mismatch;
    found   : Boolean
    required: org.apache.spark.sql.Column

任何人都可以请给我一个提示,我应该如何编写查询以生成所需的输出。

标签: apache-sparkapache-spark-sql

解决方案


试试下面的代码。

df1.join(df2,df1("id") === df2("id"))
    .withColumn("Result",
    when((
            df1("adhar_no") === df2("adhar_no") || 
            df1("pan_no") === df2("pan_no") || 
            df1("Voter_id") === df2("Voter_id") ||  
            df1("DL_no") === df2("DL_no")
        ),"Matched"
    ).otherwise("Not Matched")
)


推荐阅读