[
https://issues.apache.org/jira/browse/BEAM-848?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15936960#comment-15936960
]
ASF GitHub Bot commented on BEAM-848:
-------------------------------------
GitHub user aviemzur opened a pull request:
https://github.com/apache/beam/pull/2288
[BEAM-848] A better shuffle after reading from within mapWithState.
Be sure to do all of the following to help us incorporate your contribution
quickly and easily:
- [ ] Make sure the PR title is formatted like:
`[BEAM-<Jira issue #>] Description of pull request`
- [ ] Make sure tests pass via `mvn clean verify`. (Even better, enable
Travis-CI on your fork and ensure the whole test matrix passes).
- [ ] Replace `<Jira issue #>` in the title with the actual Jira issue
number, if there is one.
- [ ] If this contribution is large, please file an Apache
[Individual Contributor License
Agreement](https://www.apache.org/licenses/icla.txt).
---
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/aviemzur/beam
sourcerdd-unbounded-default-partitioner
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/beam/pull/2288.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #2288
----
commit 0fa4d29784ef5940c2467529e5ae7fdb78c7b98b
Author: Aviem Zur <[email protected]>
Date: 2017-03-22T13:20:51Z
[BEAM-1074] Set default-partitioner in SourceRDD.Unbounded
commit 581233f5022cabb9ef497611b643dd5413d52060
Author: Aviem Zur <[email protected]>
Date: 2017-03-22T19:11:47Z
[BEAM-1075] Shuffle the input read-values to get maximum parallelism
----
> A better shuffle after reading from within mapWithState.
> --------------------------------------------------------
>
> Key: BEAM-848
> URL: https://issues.apache.org/jira/browse/BEAM-848
> Project: Beam
> Issue Type: Improvement
> Components: runner-spark
> Reporter: Amit Sela
> Assignee: Aviem Zur
>
> The SparkRunner uses {{mapWithState}} to read and manage CheckpointMarks, and
> this stateful operation will be followed by a shuffle:
> https://github.com/apache/spark/blob/master/streaming/src/main/scala/org/apache/spark/streaming/dstream/MapWithStateDStream.scala#L159
> Since the stateful read maps "splitSource" -> "partition of a list of read
> values", the following shuffle won't benefit in any way (the list of read
> values has not been flatMapped yet). In order to avoid shuffle we need to set
> the input RDD ({{SourceRDD.Unbounded}}) partitioner to be a default
> {{HashPartitioner}} since {{mapWithState}} would use the same partitioner and
> will skip shuffle if the partitioners match.
> It would be wise to shuffle the read values _after_ flatmap.
> I will break this into two tasks:
> # Set default-partitioner to the input RDD.
> # Shuffle (using Coders) the input.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)