错误:类型不匹配::找到:布尔::必需:org.apache.spark.sql.column issue::spark/scala

dldeef67  于 2021-05-27  发布在  Spark
关注(0)|答案(2)|浏览(427)

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

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

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

zu0ti5jz

zu0ti5jz1#

你应该把这些拿走 when 声明:

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

lxkprmvk2#

试试下面的代码。

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

相关问题