You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@beam.apache.org by "Darshan Jani (Jira)" <ji...@apache.org> on 2020/05/15 13:52:00 UTC

[jira] [Created] (BEAM-10005) Unable to use ApproximateQuantiles.globally when not windowed by GlobalWindows

Darshan Jani created BEAM-10005:
-----------------------------------

             Summary: Unable to use ApproximateQuantiles.globally when not windowed by GlobalWindows
                 Key: BEAM-10005
                 URL: https://issues.apache.org/jira/browse/BEAM-10005
             Project: Beam
          Issue Type: Bug
          Components: sdk-java-core
    Affects Versions: 2.20.0
            Reporter: Darshan Jani


Unable to use ApproximateQuantiles.globally with input windowed not using GlobalWindows.
To make it run we need to set either 
{code:java}
.withoutDefaults()
{code}
or
{code:java}
.asSingletonView()
{code}

Currently we can't call any of the above on ApproximateQuantiles.globally() as it does not return underlying Combine.globally, but PTransform.

Example failing case:

{code:java}
PCollection<Long> elements = p.apply(GenerateSequence.from(0).to(100)
              .withRate(1,Duration.millis(1)).withTimestampFn(Instant::new));

      PCollection<List<Long>> input = elements
              .apply(Window.into(SlidingWindows.of(Duration.millis(3)).every(Duration.millis(1))))
              .apply(ApproximateQuantiles.globally(17));
{code}

It throws expected error from internal Combine.globally() transform:

{code:java}
Default values are not supported in Combine.globally() if the input PCollection is not windowed by GlobalWindows. Instead, use Combine.globally().withoutDefaults() to output an empty PCollection if the input PCollection is empty, or Combine.globally().asSingletonView() to get the default output of the CombineFn if the input PCollection is empty.
{code}




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