【问题标题】:Type Mismatch in scala case matchscala大小写匹配中的类型不匹配
【发布时间】:2016-07-03 01:25:01
【问题描述】:

尝试使用 spark 在单个 foreach 中创建多个数据帧,如下所示

当我尝试打印它们时,我收到了价值交付并点击了row.getAs("type")

val check = eachrec.foreach(recrd => recrd.map(row => {
  row.getAs("type") match {
    case "delivery" => val delivery_data = delivery(row.get(0).toString,row.get(1).toString)
    case "click" => val click_data = delivery(row.get(0).toString,row.get(1).toString)
    case _ => "not sure if this impacts"
}})
)

但出现以下错误:

错误:(41, 14) 类型不匹配;发现:需要字符串(“交付”):没有 case "delivery" => val delivery_data = delivery(row.get(0).toString,row.get(1).toString) ^

我的计划是使用 todf() 创建数据框,一旦我创建了由 delivery_data 和 click_data 引用的这些单独的交付对象:

delivery_data.toDF() and click_data.toDF().
  1. 请提供有关上述错误的任何线索(在匹配情况下)。
  2. 如何在 val check 中使用 todf() 创建两个 df?

【问题讨论】:

    标签: scala apache-spark spark-dataframe


    【解决方案1】:

    val 声明使您的前 2 个 cases 返回类型为 unit,但在第三种情况下您返回 String

    例如,这里的 z 类型是由编译器推断出来的,Unit

    def x = {
        val z: Unit = 3 match {
          case 2 => val a = 2
          case _ => val b = 3
        }
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-27
      • 2013-12-07
      • 1970-01-01
      • 2011-08-25
      • 2019-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多