Github user mateiz commented on the pull request:

    https://github.com/apache/incubator-spark/pull/539#issuecomment-35218879
  
    BTW, I've looked into this myself, and created a short project at 
https://github.com/mateiz/java8-test to show how an RDD-like API might work in 
Java. To make a long story short:
    
    * It looks like map() operations overloaded by just the return type of the 
lambda don't work (e.g. if you have `map(Function<T, U>)` as well as 
`map(PairFunction<T, K, V>)`).
    * The solution for this in Java 8's own 
[Stream](http://download.java.net/jdk8/docs/api/java/util/stream/Stream.html) 
API is to have separate functions for mapping to "specialized" types, like 
`mapToInt` and `mapToLong`. (Apparently at some point an overloaded `map` also 
worked, see 
[this](https://www.surveymonkey.com/sr.aspx?sm=9UyN8RRvMX8BnpTdd4rYgDlXU9uUVALNDjNn_2fY2e9_2fo_3d),
 but I'm not sure we can make it happen again.)
    
    Given this, I'd like us to simply add mapToPair and mapToDouble, and same 
for flatMap and such. If we do it, we can keep our API functions accepting 
lambda expressions throughout. I'm very much against requiring the user to 
write Function.of -- whatever that does, we should be able to do it after on 
the raw lambda expression in order to convert it to a Scala Function object.
    
    Personally I'm okay if this breaks the current Java API slightly, though it 
may also be possible to do it in a backward-compatible way (e.g. keep our 
current PairFunction, which is an abstract class so it can't be passed through 
as a lambda expression anyway, and add a new one that is an interface). But 
let's figure that out after we have a basic version working with the "new" API 
we want.


If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. To do so, please top-post your response.
If your project does not have this feature enabled and wishes so, or if the
feature is enabled but not working, please contact infrastructure at
infrastruct...@apache.org or file a JIRA ticket with INFRA.

Reply via email to