I asked this question in Scala user group two years ago:
https://groups.google.com/forum/#!topic/scala-user/W4f0d8xK1nk

Take a look if you are interested in.

On Tue, Jul 5, 2016 at 1:31 PM, Reynold Xin <r...@databricks.com> wrote:

> You can file it here: https://issues.scala-lang.org/secure/Dashboard.jspa
>
> Perhaps "bug" is not the right word, but "limitation". println accepts a
> single argument of type Any and returns Unit, and it appears that Scala
> fails to infer the correct overloaded method in this case.
>
>   def println() = Console.println()
>   def println(x: Any) = Console.println(x)
>
>
>
> On Tue, Jul 5, 2016 at 1:27 PM, Cody Koeninger <c...@koeninger.org> wrote:
>
>> I don't think that's a scala compiler bug.
>>
>> println is a valid expression that returns unit.
>>
>> Unit is not a single-argument function, and does not match any of the
>> overloads of foreachPartition
>>
>> You may be used to a conversion taking place when println is passed to
>> method expecting a function, but that's not a safe thing to do
>> silently for multiple overloads.
>>
>> tldr;
>>
>> just use
>>
>> ds.foreachPartition(x => println(x))
>>
>> you don't need any type annotations
>>
>>
>> On Tue, Jul 5, 2016 at 2:53 PM, Jacek Laskowski <ja...@japila.pl> wrote:
>> > Hi Reynold,
>> >
>> > Is this already reported and tracked somewhere. I'm quite sure that
>> > people will be asking about the reasons Spark does this. Where are
>> > such issues reported usually?
>> >
>> > Pozdrawiam,
>> > Jacek Laskowski
>> > ----
>> > https://medium.com/@jaceklaskowski/
>> > Mastering Apache Spark http://bit.ly/mastering-apache-spark
>> > Follow me at https://twitter.com/jaceklaskowski
>> >
>> >
>> > On Tue, Jul 5, 2016 at 6:19 PM, Reynold Xin <r...@databricks.com>
>> wrote:
>> >> This seems like a Scala compiler bug.
>> >>
>> >>
>> >> On Tuesday, July 5, 2016, Jacek Laskowski <ja...@japila.pl> wrote:
>> >>>
>> >>> Well, there is foreach for Java and another foreach for Scala. That's
>> >>> what I can understand. But while supporting two language-specific APIs
>> >>> -- Scala and Java -- Dataset API lost support for such simple calls
>> >>> without type annotations so you have to be explicit about the variant
>> >>> (since I'm using Scala I want to use Scala API right). It appears that
>> >>> any single-argument-function operators in Datasets are affected :(
>> >>>
>> >>> My question was to know whether there are works to fix it (if possible
>> >>> -- I don't know if it is).
>> >>>
>> >>> Pozdrawiam,
>> >>> Jacek Laskowski
>> >>> ----
>> >>> https://medium.com/@jaceklaskowski/
>> >>> Mastering Apache Spark http://bit.ly/mastering-apache-spark
>> >>> Follow me at https://twitter.com/jaceklaskowski
>> >>>
>> >>>
>> >>> On Tue, Jul 5, 2016 at 4:21 PM, Sean Owen <so...@cloudera.com> wrote:
>> >>> > Right, should have noticed that in your second mail. But foreach
>> >>> > already does what you want, right? it would be identical here.
>> >>> >
>> >>> > How these two methods do conceptually different things on different
>> >>> > arguments. I don't think I'd expect them to accept the same
>> functions.
>> >>> >
>> >>> > On Tue, Jul 5, 2016 at 3:18 PM, Jacek Laskowski <ja...@japila.pl>
>> wrote:
>> >>> >> ds is Dataset and the problem is that println (or any other
>> >>> >> one-element function) would not work here (and perhaps other
>> methods
>> >>> >> with two variants - Java's and Scala's).
>> >>> >>
>> >>> >> Pozdrawiam,
>> >>> >> Jacek Laskowski
>> >>> >> ----
>> >>> >> https://medium.com/@jaceklaskowski/
>> >>> >> Mastering Apache Spark http://bit.ly/mastering-apache-spark
>> >>> >> Follow me at https://twitter.com/jaceklaskowski
>> >>> >>
>> >>> >>
>> >>> >> On Tue, Jul 5, 2016 at 3:53 PM, Sean Owen <so...@cloudera.com>
>> wrote:
>> >>> >>> A DStream is a sequence of RDDs, not of elements. I don't think
>> I'd
>> >>> >>> expect to express an operation on a DStream as if it were
>> elements.
>> >>> >>>
>> >>> >>> On Tue, Jul 5, 2016 at 2:47 PM, Jacek Laskowski <ja...@japila.pl>
>> >>> >>> wrote:
>> >>> >>>> Sort of. Your example works, but could you do a mere
>> >>> >>>> ds.foreachPartition(println)? Why not? What should I even see the
>> >>> >>>> Java
>> >>> >>>> version?
>> >>> >>>>
>> >>> >>>> scala> val ds = spark.range(10)
>> >>> >>>> ds: org.apache.spark.sql.Dataset[Long] = [id: bigint]
>> >>> >>>>
>> >>> >>>> scala> ds.foreachPartition(println)
>> >>> >>>> <console>:26: error: overloaded method value foreachPartition
>> with
>> >>> >>>> alternatives:
>> >>> >>>>   (func:
>> >>> >>>>
>> org.apache.spark.api.java.function.ForeachPartitionFunction[Long])Unit
>> >>> >>>> <and>
>> >>> >>>>   (f: Iterator[Long] => Unit)Unit
>> >>> >>>>  cannot be applied to (Unit)
>> >>> >>>>        ds.foreachPartition(println)
>> >>> >>>>           ^
>> >>> >>>>
>> >>> >>>> Pozdrawiam,
>> >>> >>>> Jacek Laskowski
>> >>> >>>> ----
>> >>> >>>> https://medium.com/@jaceklaskowski/
>> >>> >>>> Mastering Apache Spark http://bit.ly/mastering-apache-spark
>> >>> >>>> Follow me at https://twitter.com/jaceklaskowski
>> >>> >>>>
>> >>> >>>>
>> >>> >>>> On Tue, Jul 5, 2016 at 3:32 PM, Sean Owen <so...@cloudera.com>
>> wrote:
>> >>> >>>>> Do you not mean ds.foreachPartition(_.foreach(println)) or
>> similar?
>> >>> >>>>>
>> >>> >>>>> On Tue, Jul 5, 2016 at 2:22 PM, Jacek Laskowski <
>> ja...@japila.pl>
>> >>> >>>>> wrote:
>> >>> >>>>>> Hi,
>> >>> >>>>>>
>> >>> >>>>>> It's with the master built today. Why can't I call
>> >>> >>>>>> ds.foreachPartition(println)? Is using type annotation the
>> only way
>> >>> >>>>>> to
>> >>> >>>>>> go forward? I'd be so sad if that's the case.
>> >>> >>>>>>
>> >>> >>>>>> scala> ds.foreachPartition(println)
>> >>> >>>>>> <console>:28: error: overloaded method value foreachPartition
>> with
>> >>> >>>>>> alternatives:
>> >>> >>>>>>   (func:
>> >>> >>>>>>
>> org.apache.spark.api.java.function.ForeachPartitionFunction[Record])Unit
>> >>> >>>>>> <and>
>> >>> >>>>>>   (f: Iterator[Record] => Unit)Unit
>> >>> >>>>>>  cannot be applied to (Unit)
>> >>> >>>>>>        ds.foreachPartition(println)
>> >>> >>>>>>           ^
>> >>> >>>>>>
>> >>> >>>>>> scala> sc.version
>> >>> >>>>>> res9: String = 2.0.0-SNAPSHOT
>> >>> >>>>>>
>> >>> >>>>>> Pozdrawiam,
>> >>> >>>>>> Jacek Laskowski
>> >>> >>>>>> ----
>> >>> >>>>>> https://medium.com/@jaceklaskowski/
>> >>> >>>>>> Mastering Apache Spark http://bit.ly/mastering-apache-spark
>> >>> >>>>>> Follow me at https://twitter.com/jaceklaskowski
>> >>> >>>>>>
>> >>> >>>>>>
>> >>> >>>>>>
>> ---------------------------------------------------------------------
>> >>> >>>>>> To unsubscribe e-mail: dev-unsubscr...@spark.apache.org
>> >>> >>>>>>
>> >>>
>> >>> ---------------------------------------------------------------------
>> >>> To unsubscribe e-mail: dev-unsubscr...@spark.apache.org
>> >>>
>> >>
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe e-mail: dev-unsubscr...@spark.apache.org
>> >
>>
>
>

Reply via email to