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

Alexis Seigneurin commented on SPARK-4557:
------------------------------------------

I've tried to overload:

{code}foreachRDD(foreachFunc: JFunction[R, Void]){code}

with:

{code}foreachRDD(foreachFunc: JVoidFunction[R]){code}

While this compiles correctly on the Scala side, I'm unable to use it properly 
from Java code: the Java compiler determines the type of the interface 
(Function or VoidFunction) from the lambda's parameters but it does not look at 
the return type.

> Spark Streaming' foreachRDD method should accept a VoidFunction<...>, not a 
> Function<..., Void>
> -----------------------------------------------------------------------------------------------
>
>                 Key: SPARK-4557
>                 URL: https://issues.apache.org/jira/browse/SPARK-4557
>             Project: Spark
>          Issue Type: Improvement
>          Components: Streaming
>    Affects Versions: 1.1.0
>            Reporter: Alexis Seigneurin
>            Priority: Minor
>              Labels: starter
>
> In *Java*, using Spark Streaming's foreachRDD function is quite verbose. You 
> have to write:
> {code:java}
>                 .foreachRDD(items -> {
>                     ...;
>                     return null;
>                 });
> {code}
> Instead of:
> {code:java}
>                 .foreachRDD(items -> ...);
> {code}
> This is because the foreachRDD method accepts a Function<JavaRDD<...>, Void> 
> instead of a VoidFunction<JavaRDD<...>>. This would make sense to change it 
> to a VoidFunction as, in Spark's API, the foreach method already accepts a 
> VoidFunction.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to