RE: Scala: How to match a java object????
Hi, thank you all for the asssistance. It is odd, it works when creating a new java.mathBigDecimal object, but not if I work directly with scala 5 match { case x: java.math.BigDecimal = 2 } console:23: error: scrutinee is incompatible with pattern type; found : java.math.BigDecimal required: Int 5 match { case x: java.math.BigDecimal = 2 } I will try and see how it works for my Seq[Any] and see. Thanks for the work arounds. Saif From: Sujit Pal [mailto:sujitatgt...@gmail.com] Sent: Tuesday, August 18, 2015 6:25 PM To: Ellafi, Saif A. Cc: wrbri...@gmail.com; user Subject: Re: Scala: How to match a java object Hi Saif, Would this work? import scala.collection.JavaConversions._ new java.math.BigDecimal(5) match { case x: java.math.BigDecimal = x.doubleValue } It gives me on the scala console. res9: Double = 5.0 Assuming you had a stream of BigDecimals, you could just call map on it. myBigDecimals.map(_.doubleValue) to get your Seq of Doubles. You will need the JavaConversions._ import to allow Java Doubles to be treated by Scala as Scala Doubles. -sujit On Tue, Aug 18, 2015 at 12:59 PM, saif.a.ell...@wellsfargo.commailto:saif.a.ell...@wellsfargo.com wrote: Hi, thank you for further assistance you can reproduce this by simply running 5 match { case java.math.BigDecimal = 2 } In my personal case, I am applying a map acton to a Seq[Any], so the elements inside are of type any, to which I need to apply a proper .asInstanceOf[WhoYouShouldBe]. Saif From: William Briggs [mailto:wrbri...@gmail.commailto:wrbri...@gmail.com] Sent: Tuesday, August 18, 2015 4:46 PM To: Ellafi, Saif A.; user@spark.apache.orgmailto:user@spark.apache.org Subject: Re: Scala: How to match a java object Could you share your pattern matching expression that is failing? On Tue, Aug 18, 2015, 3:38 PM saif.a.ell...@wellsfargo.commailto:saif.a.ell...@wellsfargo.com wrote: Hi all, I am trying to run a spark job, in which I receive java.math.BigDecimal objects, instead of the scala equivalents, and I am trying to convert them into Doubles. If I try to match-case this object class, I get: “error: object java.math.BigDecimal is not a value” How could I get around matching java objects? I would like to avoid a multiple try-catch on ClassCastExceptions for all my checks. Thank you, Saif
RE: Scala: How to match a java object????
It is okay. this methodology works very well for mapping objects of my Seq[Any]. It is indeed very cool :-) Saif From: Ted Yu [mailto:yuzhih...@gmail.com] Sent: Wednesday, August 19, 2015 10:47 AM To: Ellafi, Saif A. Cc: sujitatgt...@gmail.com; wrbri...@gmail.com; user@spark.apache.org Subject: Re: Scala: How to match a java object Saif: In your example below, the error was due to there is no automatic conversion from Int to BigDecimal. Cheers On Aug 19, 2015, at 6:40 AM, saif.a.ell...@wellsfargo.commailto:saif.a.ell...@wellsfargo.com saif.a.ell...@wellsfargo.commailto:saif.a.ell...@wellsfargo.com wrote: Hi, thank you all for the asssistance. It is odd, it works when creating a new java.mathBigDecimal object, but not if I work directly with scala 5 match { case x: java.math.BigDecimal = 2 } console:23: error: scrutinee is incompatible with pattern type; found : java.math.BigDecimal required: Int 5 match { case x: java.math.BigDecimal = 2 } I will try and see how it works for my Seq[Any] and see. Thanks for the work arounds. Saif From: Sujit Pal [mailto:sujitatgt...@gmail.com] Sent: Tuesday, August 18, 2015 6:25 PM To: Ellafi, Saif A. Cc: wrbri...@gmail.commailto:wrbri...@gmail.com; user Subject: Re: Scala: How to match a java object Hi Saif, Would this work? import scala.collection.JavaConversions._ new java.math.BigDecimal(5) match { case x: java.math.BigDecimal = x.doubleValue } It gives me on the scala console. res9: Double = 5.0 Assuming you had a stream of BigDecimals, you could just call map on it. myBigDecimals.map(_.doubleValue) to get your Seq of Doubles. You will need the JavaConversions._ import to allow Java Doubles to be treated by Scala as Scala Doubles. -sujit On Tue, Aug 18, 2015 at 12:59 PM, saif.a.ell...@wellsfargo.commailto:saif.a.ell...@wellsfargo.com wrote: Hi, thank you for further assistance you can reproduce this by simply running 5 match { case java.math.BigDecimal = 2 } In my personal case, I am applying a map acton to a Seq[Any], so the elements inside are of type any, to which I need to apply a proper .asInstanceOf[WhoYouShouldBe]. Saif From: William Briggs [mailto:wrbri...@gmail.commailto:wrbri...@gmail.com] Sent: Tuesday, August 18, 2015 4:46 PM To: Ellafi, Saif A.; user@spark.apache.orgmailto:user@spark.apache.org Subject: Re: Scala: How to match a java object Could you share your pattern matching expression that is failing? On Tue, Aug 18, 2015, 3:38 PM saif.a.ell...@wellsfargo.commailto:saif.a.ell...@wellsfargo.com wrote: Hi all, I am trying to run a spark job, in which I receive java.math.BigDecimal objects, instead of the scala equivalents, and I am trying to convert them into Doubles. If I try to match-case this object class, I get: “error: object java.math.BigDecimal is not a value” How could I get around matching java objects? I would like to avoid a multiple try-catch on ClassCastExceptions for all my checks. Thank you, Saif
Re: Scala: How to match a java object????
Saif: In your example below, the error was due to there is no automatic conversion from Int to BigDecimal. Cheers On Aug 19, 2015, at 6:40 AM, saif.a.ell...@wellsfargo.com saif.a.ell...@wellsfargo.com wrote: Hi, thank you all for the asssistance. It is odd, it works when creating a new java.mathBigDecimal object, but not if I work directly with scala 5 match { case x: java.math.BigDecimal = 2 } console:23: error: scrutinee is incompatible with pattern type; found : java.math.BigDecimal required: Int 5 match { case x: java.math.BigDecimal = 2 } I will try and see how it works for my Seq[Any] and see. Thanks for the work arounds. Saif From: Sujit Pal [mailto:sujitatgt...@gmail.com] Sent: Tuesday, August 18, 2015 6:25 PM To: Ellafi, Saif A. Cc: wrbri...@gmail.com; user Subject: Re: Scala: How to match a java object Hi Saif, Would this work? import scala.collection.JavaConversions._ new java.math.BigDecimal(5) match { case x: java.math.BigDecimal = x.doubleValue } It gives me on the scala console. res9: Double = 5.0 Assuming you had a stream of BigDecimals, you could just call map on it. myBigDecimals.map(_.doubleValue) to get your Seq of Doubles. You will need the JavaConversions._ import to allow Java Doubles to be treated by Scala as Scala Doubles. -sujit On Tue, Aug 18, 2015 at 12:59 PM, saif.a.ell...@wellsfargo.com wrote: Hi, thank you for further assistance you can reproduce this by simply running 5 match { case java.math.BigDecimal = 2 } In my personal case, I am applying a map acton to a Seq[Any], so the elements inside are of type any, to which I need to apply a proper .asInstanceOf[WhoYouShouldBe]. Saif From: William Briggs [mailto:wrbri...@gmail.com] Sent: Tuesday, August 18, 2015 4:46 PM To: Ellafi, Saif A.; user@spark.apache.org Subject: Re: Scala: How to match a java object Could you share your pattern matching expression that is failing? On Tue, Aug 18, 2015, 3:38 PM saif.a.ell...@wellsfargo.com wrote: Hi all, I am trying to run a spark job, in which I receive java.math.BigDecimal objects, instead of the scala equivalents, and I am trying to convert them into Doubles. If I try to match-case this object class, I get: “error: object java.math.BigDecimal is not a value” How could I get around matching java objects? I would like to avoid a multiple try-catch on ClassCastExceptions for all my checks. Thank you, Saif
RE: Scala: How to match a java object????
Hi, thank you for further assistance you can reproduce this by simply running 5 match { case java.math.BigDecimal = 2 } In my personal case, I am applying a map acton to a Seq[Any], so the elements inside are of type any, to which I need to apply a proper .asInstanceOf[WhoYouShouldBe]. Saif From: William Briggs [mailto:wrbri...@gmail.com] Sent: Tuesday, August 18, 2015 4:46 PM To: Ellafi, Saif A.; user@spark.apache.org Subject: Re: Scala: How to match a java object Could you share your pattern matching expression that is failing? On Tue, Aug 18, 2015, 3:38 PM saif.a.ell...@wellsfargo.commailto:saif.a.ell...@wellsfargo.com wrote: Hi all, I am trying to run a spark job, in which I receive java.math.BigDecimal objects, instead of the scala equivalents, and I am trying to convert them into Doubles. If I try to match-case this object class, I get: “error: object java.math.BigDecimal is not a value” How could I get around matching java objects? I would like to avoid a multiple try-catch on ClassCastExceptions for all my checks. Thank you, Saif
Re: Scala: How to match a java object????
On Tue, Aug 18, 2015 at 12:59 PM, saif.a.ell...@wellsfargo.com wrote: 5 match { case java.math.BigDecimal = 2 } 5 match { case _: java.math.BigDecimal = 2 } -- Marcelo - To unsubscribe, e-mail: user-unsubscr...@spark.apache.org For additional commands, e-mail: user-h...@spark.apache.org
Re: Scala: How to match a java object????
On Tue, Aug 18, 2015 at 1:19 PM, saif.a.ell...@wellsfargo.com wrote: Hi, Can you please elaborate? I am confused :-) You did note that the two pieces of code are different, right? See http://docs.scala-lang.org/tutorials/tour/pattern-matching.html for how to match things in Scala, especially the typed pattern example. -Original Message- From: Marcelo Vanzin [mailto:van...@cloudera.com] Sent: Tuesday, August 18, 2015 5:15 PM To: Ellafi, Saif A. Cc: wrbri...@gmail.com; user@spark.apache.org Subject: Re: Scala: How to match a java object On Tue, Aug 18, 2015 at 12:59 PM, saif.a.ell...@wellsfargo.com wrote: 5 match { case java.math.BigDecimal = 2 } 5 match { case _: java.math.BigDecimal = 2 } -- Marcelo -- Marcelo - To unsubscribe, e-mail: user-unsubscr...@spark.apache.org For additional commands, e-mail: user-h...@spark.apache.org
Re: Scala: How to match a java object????
Could you share your pattern matching expression that is failing? On Tue, Aug 18, 2015, 3:38 PM saif.a.ell...@wellsfargo.com wrote: Hi all, I am trying to run a spark job, in which I receive *java.math.BigDecimal* objects, instead of the scala equivalents, and I am trying to convert them into Doubles. If I try to match-case this object class, I get: *“**error: object java.math.BigDecimal is not a value**”* How could I get around matching java objects? I would like to avoid a multiple try-catch on ClassCastExceptions for all my checks. Thank you, Saif
RE: Scala: How to match a java object????
Hi, Can you please elaborate? I am confused :-) Saif -Original Message- From: Marcelo Vanzin [mailto:van...@cloudera.com] Sent: Tuesday, August 18, 2015 5:15 PM To: Ellafi, Saif A. Cc: wrbri...@gmail.com; user@spark.apache.org Subject: Re: Scala: How to match a java object On Tue, Aug 18, 2015 at 12:59 PM, saif.a.ell...@wellsfargo.com wrote: 5 match { case java.math.BigDecimal = 2 } 5 match { case _: java.math.BigDecimal = 2 } -- Marcelo
Re: Scala: How to match a java object????
Hi Saif, Would this work? import scala.collection.JavaConversions._ new java.math.BigDecimal(5) match { case x: java.math.BigDecimal = x.doubleValue } It gives me on the scala console. res9: Double = 5.0 Assuming you had a stream of BigDecimals, you could just call map on it. myBigDecimals.map(_.doubleValue) to get your Seq of Doubles. You will need the JavaConversions._ import to allow Java Doubles to be treated by Scala as Scala Doubles. -sujit On Tue, Aug 18, 2015 at 12:59 PM, saif.a.ell...@wellsfargo.com wrote: Hi, thank you for further assistance you can reproduce this by simply running *5 match { case java.math.BigDecimal = 2 }* In my personal case, I am applying a map acton to a Seq[Any], so the elements inside are of type any, to which I need to apply a proper .asInstanceOf[WhoYouShouldBe]. Saif *From:* William Briggs [mailto:wrbri...@gmail.com] *Sent:* Tuesday, August 18, 2015 4:46 PM *To:* Ellafi, Saif A.; user@spark.apache.org *Subject:* Re: Scala: How to match a java object Could you share your pattern matching expression that is failing? On Tue, Aug 18, 2015, 3:38 PM saif.a.ell...@wellsfargo.com wrote: Hi all, I am trying to run a spark job, in which I receive *java.math.BigDecimal *objects, instead of the scala equivalents, and I am trying to convert them into Doubles. If I try to match-case this object class, I get: *“error: object java.math.BigDecimal is not a value”* How could I get around matching java objects? I would like to avoid a multiple try-catch on ClassCastExceptions for all my checks. Thank you, Saif