lukecwik commented on a change in pull request #10897: [BEAM-2939] Java 
UnboundedSource SDF wrapper
URL: https://github.com/apache/beam/pull/10897#discussion_r384868638
 
 

 ##########
 File path: sdks/java/core/src/main/java/org/apache/beam/sdk/io/Read.java
 ##########
 @@ -375,4 +422,361 @@ public void checkDone() throws IllegalStateException {
       }
     }
   }
+
+  /**
+   * A splittable {@link DoFn} which executes an {@link UnboundedSource}.
+   *
+   * <p>We model the element as the original source and the restriction as a 
pair of the sub-source
+   * and its {@link CheckpointMark}. This allows us to split the sub-source 
over and over as long as
+   * the checkpoint mark is {@code null} or the {@link NoopCheckpointMark} 
since it does not
+   * maintain any state.
+   */
+  // TODO: Support reporting the watermark, currently the watermark never 
advances.
+  @UnboundedPerElement
+  static class UnboundedSourceAsSDFWrapperFn<OutputT, CheckpointT extends 
CheckpointMark>
+      extends DoFn<UnboundedSource<OutputT, CheckpointT>, 
ValueWithRecordId<OutputT>> {
+
+    private static final int DEFAULT_DESIRED_NUM_SPLITS = 20;
 
 Review comment:
   The default in Dataflow is `4 * first non-null of (maxNumWorkers, 
numWorkers, 5)`:
   
https://github.com/apache/beam/blob/860131b5d47c830b772d3f1665a26a45ec85ab36/runners/google-cloud-dataflow-java/src/main/java/org/apache/beam/runners/dataflow/internal/CustomSources.java#L51
 (I like the TODO in the method)
   
   Which is why I went with 20 as the default.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to