[ 
https://issues.apache.org/jira/browse/SPARK-25369?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16650356#comment-16650356
 ] 

Sean Owen commented on SPARK-25369:
-----------------------------------

Example:
{code:java}
@FunctionalInterface
public interface Function<T1, R> extends Serializable {
  R call(T1 v1) throws Exception;
}{code}
becomes:
{code:java}
@FunctionalInterface
public interface Function<T1, R> extends Serializable, 
java.util.function.Function<T1, R> {
  R call(T1 v1) throws Exception;
  default R apply(T1 v1) {
    try {
      return call(v1);
    } catch (Exception e) {
      throw new RuntimeException(e);
    }
  }
}{code}
The upside, as far as I can tell, is that you'd be able to reuse a single 
function implementation in calls to Spark APIs and JDK APIs like in 
Collections. Then again... you can already write a lambda that calls a function 
easily.

I end up neutral on it.

> Replace Java shim functional interfaces like java.api.Function with Java 8 
> equivalents
> --------------------------------------------------------------------------------------
>
>                 Key: SPARK-25369
>                 URL: https://issues.apache.org/jira/browse/SPARK-25369
>             Project: Spark
>          Issue Type: Improvement
>          Components: Spark Core
>    Affects Versions: 2.4.0
>            Reporter: Sean Owen
>            Priority: Minor
>              Labels: release-notes
>
> In Spark 3, we should remove interfaces like 
> org.apache.spark.api.java.function.Function and replace with 
> java.util.function equivalents, for better compatibility with Java 8. This 
> would let callers pass, in more cases, an existing functional object in Java 
> rather than wrap in a lambda.
> It's possible to have the functional interfaces in Spark just extend Java 8 
> functional interfaces to interoperate better with existing code, but might be 
> as well to remove them in Spark 3 to clean up.
> A partial list of transitions from Spark to Java interfaces:
>  * Function -> Function
>  * Function0 -> Supplier
>  * Function2 -> BiFunction
>  * VoidFunction -> Consumer
>  * FlatMapFunction etc -> extends Function<T,Iterable<R>> etc



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org
For additional commands, e-mail: issues-h...@spark.apache.org

Reply via email to