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

Reply via email to