【问题标题】:error: type mismatch::found :Boolean:: required: org.apache.spark.sql.Column issue::Spark/Scala错误:类型不匹配::found :Boolean:: required: org.apache.spark.sql.Column issue::Spark/Scala
【发布时间】:2020-05-15 17:57:59
【问题描述】:

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

    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-spark apache-spark-sql


    【解决方案1】:

    试试下面的代码。

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

    【讨论】:

      【解决方案2】:

      您应该删除这些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"))
      

      【讨论】:

      • 谢谢@chlebek ..是的,它对我有用,实际上我也在我的代码中使用了 drop 方法,并且在一个地方使用了 df("pan_no") 的 drop 方法,所以出现了错误。
      猜你喜欢
      • 2022-08-02
      • 1970-01-01
      • 2013-09-18
      • 2012-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 1970-01-01
      相关资源
      最近更新 更多