Hi Lee, I'm stuck with only mobile devices for correspondence right now, so
I can't get to shell to play with this issue - this is all supposition; I
think that the lambdas are closing over the context because it's a
constructor parameter to your Runnable class, which is why inlining the
lambdas into your main method doesn't show this issue.

On Sat, Jun 6, 2015, 10:55 AM Lee McFadden <splee...@gmail.com> wrote:

> Hi Will,
>
> That doesn't seem to be the case and was part of the source of my
> confusion. The code currently in the run method of the runnable works
> perfectly fine with the lambda expressions when it is invoked from the main
> method. They also work when they are invoked from within a separate method
> on the Transforms object.
>
> It was only when putting that same code into another thread that the
> serialization exception occurred.
>
> Examples throughout the spark docs also use lambda expressions a lot -
> surely those examples also would not work if this is always an issue with
> lambdas?
>
> On Sat, Jun 6, 2015, 12:21 AM Will Briggs <wrbri...@gmail.com> wrote:
>
>> Hi Lee, it's actually not related to threading at all - you would still
>> have the same problem even if you were using a single thread. See this
>> section (
>> https://spark.apache.org/docs/latest/programming-guide.html#passing-functions-to-spark)
>> of the Spark docs.
>>
>>
>> On June 5, 2015, at 5:12 PM, Lee McFadden <splee...@gmail.com> wrote:
>>
>>
>> On Fri, Jun 5, 2015 at 2:05 PM Will Briggs <wrbri...@gmail.com> wrote:
>>
>>> Your lambda expressions on the RDDs in the SecondRollup class are
>>> closing around the context, and Spark has special logic to ensure that all
>>> variables in a closure used on an RDD are Serializable - I hate linking to
>>> Quora, but there's a good explanation here:
>>> http://www.quora.com/What-does-Closure-cleaner-func-mean-in-Spark
>>>
>>
>> Ah, I see!  So if I broke out the lambda expressions into a method on an
>> object it would prevent this issue.  Essentially, "don't use lambda
>> expressions when using threads".
>>
>> Thanks again, I appreciate the help.
>>
>

Reply via email to