In the documentation it's said that we need to override the hashCode and equals methods. Without overriding it does't work too. I get this error on REPL and stand alone application
On Fri, Oct 24, 2014 at 3:29 AM, Prashant Sharma <scrapco...@gmail.com> wrote: > Are you doing this in REPL ? Then there is a bug filed for this, I just > can't recall the bug ID at the moment. > > Prashant Sharma > > > > On Fri, Oct 24, 2014 at 4:07 AM, Niklas Wilcke < > 1wil...@informatik.uni-hamburg.de> wrote: > >> 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 >> >> >> >