[
https://issues.apache.org/jira/browse/BEAM-10475?focusedWorklogId=482545&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-482545
]
ASF GitHub Bot logged work on BEAM-10475:
-----------------------------------------
Author: ASF GitHub Bot
Created on: 12/Sep/20 19:57
Start Date: 12/Sep/20 19:57
Worklog Time Spent: 10m
Work Description: nehsyc commented on a change in pull request #12726:
URL: https://github.com/apache/beam/pull/12726#discussion_r487443109
##########
File path:
sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/GroupIntoBatches.java
##########
@@ -150,70 +185,96 @@ public long apply(long left, long right) {
});
this.keySpec = StateSpecs.value(inputKeyCoder);
- // prefetch every 20% of batchSize elements. Do not prefetch if
batchSize is too little
+ // Prefetch every 20% of batchSize elements. Do not prefetch if
batchSize is too little
this.prefetchFrequency = ((batchSize / 5) <= 1) ? Long.MAX_VALUE :
(batchSize / 5);
}
@ProcessElement
public void processElement(
- @TimerId(END_OF_WINDOW_ID) Timer timer,
+ @TimerId(END_OF_WINDOW_ID) Timer windowTimer,
+ @TimerId(END_OF_BUFFERING_ID) Timer bufferingTimer,
@StateId(BATCH_ID) BagState<InputT> batch,
@StateId(NUM_ELEMENTS_IN_BATCH_ID) CombiningState<Long, long[], Long>
numElementsInBatch,
@StateId(KEY_ID) ValueState<K> key,
@Element KV<K, InputT> element,
BoundedWindow window,
OutputReceiver<KV<K, Iterable<InputT>>> receiver) {
- Instant windowExpires = window.maxTimestamp().plus(allowedLateness);
-
- LOG.debug(
- "*** SET TIMER *** to point in time {} for window {}",
- windowExpires.toString(),
- window.toString());
- timer.set(windowExpires);
+ Instant windowEnds = window.maxTimestamp().plus(allowedLateness);
+ LOG.debug("*** SET TIMER *** to point in time {} for window {}",
windowEnds, window);
+ windowTimer.set(windowEnds);
key.write(element.getKey());
+ LOG.debug("*** BATCH *** Add element for window {} ", window);
batch.add(element.getValue());
- LOG.debug("*** BATCH *** Add element for window {} ", window.toString());
- // blind add is supported with combiningState
+ // Blind add is supported with combiningState
numElementsInBatch.add(1L);
+
Long num = numElementsInBatch.read();
+ if (num == 1 && maxBufferingDuration.isLongerThan(Duration.ZERO)) {
Review comment:
We still need the check on non-null value here, if not non-zero, since
we should not set the timer in the case where the buffering duration is not set
(i.e., when only `ofSize()` is called).
----------------------------------------------------------------
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]
Issue Time Tracking
-------------------
Worklog Id: (was: 482545)
Time Spent: 2h 10m (was: 2h)
> GroupIntoBatches with Runner-determined Sharding
> ------------------------------------------------
>
> Key: BEAM-10475
> URL: https://issues.apache.org/jira/browse/BEAM-10475
> Project: Beam
> Issue Type: Improvement
> Components: runner-dataflow
> Reporter: Siyuan Chen
> Assignee: Siyuan Chen
> Priority: P2
> Labels: GCP, performance
> Time Spent: 2h 10m
> Remaining Estimate: 0h
>
> [https://s.apache.org/sharded-group-into-batches|https://s.apache.org/sharded-group-into-batches__]
> Improve the existing Beam transform, GroupIntoBatches, to allow runners to
> choose different sharding strategies depending on how the data needs to be
> grouped. The goal is to help with the situation where the elements to process
> need to be co-located to reduce the overhead that would otherwise be incurred
> per element, while not losing the ability to scale the parallelism. The
> essential idea is to build a stateful DoFn with shardable states.
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)