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

Kenneth Knowles commented on BEAM-12335:
----------------------------------------

Fusion does not help high fanout, really. Assuming post-fanout transforms are 
roughly 1:1 ratio. Fusion breaks are what you do, so that the high fanout is 
buffered in a storage system and processed in separate bundles. I think the 
feature here would be DirectRunner re-bundling elements. I believe today, all 
elements output from a bundle are enqueue as a single downstream bundle. 
PCollections do not have individual queues. Instead each bundle is placed on 
the ExecutorService queue. Bundles are not split. For high fanout, that is what 
you need.

> Apply basic fusion to Java DirectRunner to avoid keeping all intermittent 
> results in memory 
> --------------------------------------------------------------------------------------------
>
>                 Key: BEAM-12335
>                 URL: https://issues.apache.org/jira/browse/BEAM-12335
>             Project: Beam
>          Issue Type: Improvement
>          Components: runner-direct
>            Reporter: Boyuan Zhang
>            Priority: P2
>
> Current java direct runner doesn't fuse transforms into steps. Instead, it 
> almost executes each transform one by one. It results in memory pressure when 
> any transform is high-fanout.
> We already have a simple fusion logic in Java 
> SDK(https://github.com/apache/beam/blob/master/runners/core-construction-java/src/main/java/org/apache/beam/runners/core/construction/graph/GreedyPipelineFuser.java).
>  Work remaining here might be:
> * Apply such fusion into DirectRunner
> * Change the DirectRunner to be able run the fused steps.
> I understand that DirectRunner doesn't expect processing large volume data 
> and changing DirectRunner execution might be a fair amount of work.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to