Hi Jao, I don't really know why this doesn't work but I have two hints. You don't need to override hashCode and equals. The modifier case is doing that for you. Writing
case class PersonID(id: String) would be enough to get the class you want I think. If I change the type of the id param to Int it works for me but I don't know why. case class PersonID(id: Int) Looks like a strange behavior to me. Have a try. Good luck, Niklas On 23.10.2014 21:52, Jaonary Rabarisoa wrote: > Hi all, > > I have the following case class that I want to use as a key in a > key-value rdd. I defined the equals and hashCode methode but it's not > working. What I'm doing wrong ? > > /case class PersonID(id: String) {/ > / / > / override def hashCode = id.hashCode/ > / / > / override def equals(other: Any) = other match {/ > / / > / case that: PersonID => this.id <http://this.id> == that.id > <http://that.id> && this.getClass == that.getClass/ > / case _ => false/ > / } / > / } / > / / > / / > / val p = sc.parallelize((1 until 10).map(x => (PersonID("1"),x )))/ > / > / > / > / > /p.groupByKey.collect foreach println/ > / > / > /(PersonID(1),CompactBuffer(5))/ > /(PersonID(1),CompactBuffer(6))/ > /(PersonID(1),CompactBuffer(7))/ > /(PersonID(1),CompactBuffer(8, 9))/ > /(PersonID(1),CompactBuffer(1))/ > /(PersonID(1),CompactBuffer(2))/ > /(PersonID(1),CompactBuffer(3))/ > /(PersonID(1),CompactBuffer(4))/ > / > / > / > / > Best, > > Jao