我一直认为案件类的平等表现得非常好......直到今天!
在火花壳中,我运行了以下内容:
scala> case class TV(value:Int)
defined class TV
scala> sc.parallelize(Seq((TV(1),"a"),(TV(1),"b"))).map(_._1).countByValue()
res37: scala.collection.Map[TV,Long] = Map(TV(1) -> 1, TV(1) -> 1)
我原本期望两个TV
值都被卷起来作为相同的密钥。
如果我从TK中提取值,它的行为与预期一致:
sc.parallelize(Seq((TV(1),"a"),(TV(1),"b"))).map(_._1.value).countByValue()
res38: scala.collection.Map[Int,Long] = Map(1 -> 2)
这里发生了什么?