Search in sources :

Example 66 with Coder

use of org.apache.beam.sdk.coders.Coder in project beam by apache.

the class PTransformRunnerFactoryTestContext method addOutgoingDataEndpoint.

@Override
public <T> FnDataReceiver<T> addOutgoingDataEndpoint(ApiServiceDescriptor apiServiceDescriptor, Coder<T> coder) {
    BeamFnDataOutboundAggregator aggregator = getOutboundAggregators().get(apiServiceDescriptor);
    FnDataReceiver<T> receiver = aggregator.registerOutputDataLocation(getPTransformId(), coder);
    getOutgoingDataEndpoints().computeIfAbsent(apiServiceDescriptor, (unused) -> new ArrayList<>()).add(DataEndpoint.create(getPTransformId(), coder, receiver));
    return receiver;
}
Also used : BeamFnDataOutboundAggregator(org.apache.beam.sdk.fn.data.BeamFnDataOutboundAggregator) BeamFnDataOutboundAggregator(org.apache.beam.sdk.fn.data.BeamFnDataOutboundAggregator) Elements(org.apache.beam.model.fnexecution.v1.BeamFnApi.Elements) WindowedValue(org.apache.beam.sdk.util.WindowedValue) BeamFnStateClient(org.apache.beam.fn.harness.state.BeamFnStateClient) BundleFinalizer(org.apache.beam.sdk.transforms.DoFn.BundleFinalizer) Coder(org.apache.beam.sdk.coders.Coder) HashMap(java.util.HashMap) CompletableFuture(java.util.concurrent.CompletableFuture) PipelineOptionsFactory(org.apache.beam.sdk.options.PipelineOptionsFactory) Supplier(java.util.function.Supplier) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Map(java.util.Map) DelayedBundleApplication(org.apache.beam.model.fnexecution.v1.BeamFnApi.DelayedBundleApplication) BeamFnDataClient(org.apache.beam.fn.harness.data.BeamFnDataClient) BundleApplication(org.apache.beam.model.fnexecution.v1.BeamFnApi.BundleApplication) NoSuchElementException(java.util.NoSuchElementException) MetricsApi(org.apache.beam.model.pipeline.v1.MetricsApi) ApiServiceDescriptor(org.apache.beam.model.pipeline.v1.Endpoints.ApiServiceDescriptor) PipelineOptions(org.apache.beam.sdk.options.PipelineOptions) RunnerApi(org.apache.beam.model.pipeline.v1.RunnerApi) DoFn(org.apache.beam.sdk.transforms.DoFn) CloseableFnDataReceiver(org.apache.beam.sdk.fn.data.CloseableFnDataReceiver) TimerEndpoint(org.apache.beam.sdk.fn.data.TimerEndpoint) FnDataReceiver(org.apache.beam.sdk.fn.data.FnDataReceiver) Set(java.util.Set) BundleSplitListener(org.apache.beam.fn.harness.control.BundleSplitListener) BeamFnApi(org.apache.beam.model.fnexecution.v1.BeamFnApi) ProgressRequestCallback(org.apache.beam.fn.harness.PTransformRunnerFactory.ProgressRequestCallback) DataEndpoint(org.apache.beam.sdk.fn.data.DataEndpoint) List(java.util.List) StateRequest(org.apache.beam.model.fnexecution.v1.BeamFnApi.StateRequest) Timer(org.apache.beam.runners.core.construction.Timer) Instant(org.joda.time.Instant) AutoValue(com.google.auto.value.AutoValue) Collections(java.util.Collections) StateResponse(org.apache.beam.model.fnexecution.v1.BeamFnApi.StateResponse) ThrowingRunnable(org.apache.beam.sdk.function.ThrowingRunnable) ArrayList(java.util.ArrayList)

Example 67 with Coder

use of org.apache.beam.sdk.coders.Coder in project beam by apache.

the class BeamFnDataOutboundAggregatorTest method testConfiguredTimeLimit.

@Test
public void testConfiguredTimeLimit() throws Exception {
    List<Elements> values = new ArrayList<>();
    PipelineOptions options = PipelineOptionsFactory.create();
    options.as(ExperimentalOptions.class).setExperiments(Arrays.asList("data_buffer_time_limit_ms=1"));
    final CountDownLatch waitForFlush = new CountDownLatch(1);
    BeamFnDataOutboundAggregator aggregator = new BeamFnDataOutboundAggregator(options, endpoint::getInstructionId, TestStreams.withOnNext((Consumer<Elements>) e -> {
        values.add(e);
        waitForFlush.countDown();
    }).build(), false);
    // Test that it emits when time passed the time limit
    FnDataReceiver<byte[]> dataReceiver = registerOutputLocation(aggregator, endpoint, CODER);
    aggregator.start();
    dataReceiver.accept(new byte[1]);
    // wait the flush thread to flush the buffer
    waitForFlush.await();
    assertEquals(messageWithData(new byte[1]), values.get(0));
}
Also used : TestStreams(org.apache.beam.sdk.fn.test.TestStreams) Arrays(java.util.Arrays) Elements(org.apache.beam.model.fnexecution.v1.BeamFnApi.Elements) ExperimentalOptions(org.apache.beam.sdk.options.ExperimentalOptions) RunWith(org.junit.runner.RunWith) Parameters(org.junit.runners.Parameterized.Parameters) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) Coder(org.apache.beam.sdk.coders.Coder) PipelineOptionsFactory(org.apache.beam.sdk.options.PipelineOptionsFactory) ArrayList(java.util.ArrayList) Iterables(org.apache.beam.vendor.guava.v26_0_jre.com.google.common.collect.Iterables) ByteString(org.apache.beam.vendor.grpc.v1p43p2.com.google.protobuf.ByteString) Assert.fail(org.junit.Assert.fail) MatcherAssert.assertThat(org.hamcrest.MatcherAssert.assertThat) PipelineOptions(org.apache.beam.sdk.options.PipelineOptions) LengthPrefixCoder(org.apache.beam.sdk.coders.LengthPrefixCoder) Parameterized(org.junit.runners.Parameterized) Matchers.empty(org.hamcrest.Matchers.empty) Collection(java.util.Collection) Matchers(org.hamcrest.Matchers) IOException(java.io.IOException) Test(org.junit.Test) BeamFnApi(org.apache.beam.model.fnexecution.v1.BeamFnApi) Consumer(java.util.function.Consumer) CountDownLatch(java.util.concurrent.CountDownLatch) List(java.util.List) Receiver(org.apache.beam.sdk.fn.data.BeamFnDataOutboundAggregator.Receiver) ByteArrayCoder(org.apache.beam.sdk.coders.ByteArrayCoder) Assert.assertEquals(org.junit.Assert.assertEquals) PipelineOptions(org.apache.beam.sdk.options.PipelineOptions) ExperimentalOptions(org.apache.beam.sdk.options.ExperimentalOptions) ArrayList(java.util.ArrayList) Elements(org.apache.beam.model.fnexecution.v1.BeamFnApi.Elements) CountDownLatch(java.util.concurrent.CountDownLatch) Test(org.junit.Test)

Example 68 with Coder

use of org.apache.beam.sdk.coders.Coder in project beam by apache.

the class DynamicProtoCoderTest method testDynamicMessage.

@Test
public void testDynamicMessage() throws Exception {
    DynamicMessage message = DynamicMessage.newBuilder(MessageA.getDescriptor()).setField(MessageA.getDescriptor().findFieldByNumber(MessageA.FIELD1_FIELD_NUMBER), "foo").build();
    Coder<DynamicMessage> coder = DynamicProtoCoder.of(message.getDescriptorForType());
    // Special code to check the DynamicMessage equality (@see IsDynamicMessageEqual)
    for (Coder.Context context : ALL_CONTEXTS) {
        CoderProperties.coderDecodeEncodeInContext(coder, context, message, IsDynamicMessageEqual.equalTo(message));
    }
}
Also used : Coder(org.apache.beam.sdk.coders.Coder) DynamicMessage(com.google.protobuf.DynamicMessage) Test(org.junit.Test)

Example 69 with Coder

use of org.apache.beam.sdk.coders.Coder in project beam by apache.

the class JmsIOTest method testCheckpointMarkDefaultCoder.

/**
 * Test the checkpoint mark default coder, which is actually AvroCoder.
 */
@Test
public void testCheckpointMarkDefaultCoder() throws Exception {
    JmsCheckpointMark jmsCheckpointMark = new JmsCheckpointMark();
    jmsCheckpointMark.add(new ActiveMQMessage());
    Coder coder = new JmsIO.UnboundedJmsSource(null).getCheckpointMarkCoder();
    CoderProperties.coderSerializable(coder);
    CoderProperties.coderDecodeEncodeEqual(coder, jmsCheckpointMark);
}
Also used : SerializableCoder(org.apache.beam.sdk.coders.SerializableCoder) Coder(org.apache.beam.sdk.coders.Coder) ActiveMQMessage(org.apache.activemq.command.ActiveMQMessage) Test(org.junit.Test)

Example 70 with Coder

use of org.apache.beam.sdk.coders.Coder in project beam by apache.

the class ProcessBundleBenchmark method testTinyBundle.

@Benchmark
// Use several threads since we expect contention during bundle processing.
@Threads(16)
public void testTinyBundle(TrivialTransform trivialTransform) throws Exception {
    Map<String, ? super Coder<WindowedValue<?>>> remoteOutputCoders = trivialTransform.descriptor.getRemoteOutputCoders();
    Map<String, RemoteOutputReceiver<?>> outputReceivers = new HashMap<>();
    AtomicInteger outputValuesCount = new AtomicInteger();
    for (Entry<String, ? super Coder<WindowedValue<?>>> remoteOutputCoder : remoteOutputCoders.entrySet()) {
        outputReceivers.put(remoteOutputCoder.getKey(), RemoteOutputReceiver.of((Coder) remoteOutputCoder.getValue(), (FnDataReceiver<? super WindowedValue<?>>) (WindowedValue<?> value) -> outputValuesCount.incrementAndGet()));
    }
    try (RemoteBundle bundle = trivialTransform.processor.newBundle(outputReceivers, BundleProgressHandler.ignored())) {
        Iterables.getOnlyElement(bundle.getInputReceivers().values()).accept(valueInGlobalWindow(new byte[0]));
    }
    assertEquals(3, outputValuesCount.getAndSet(0));
}
Also used : RemoteOutputReceiver(org.apache.beam.runners.fnexecution.control.RemoteOutputReceiver) KvCoder(org.apache.beam.sdk.coders.KvCoder) Coder(org.apache.beam.sdk.coders.Coder) StringUtf8Coder(org.apache.beam.sdk.coders.StringUtf8Coder) BigEndianLongCoder(org.apache.beam.sdk.coders.BigEndianLongCoder) FnDataReceiver(org.apache.beam.sdk.fn.data.FnDataReceiver) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HashMap(java.util.HashMap) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) WindowedValue(org.apache.beam.sdk.util.WindowedValue) ByteString(org.apache.beam.vendor.grpc.v1p43p2.com.google.protobuf.ByteString) RemoteBundle(org.apache.beam.runners.fnexecution.control.RemoteBundle) Threads(org.openjdk.jmh.annotations.Threads) Benchmark(org.openjdk.jmh.annotations.Benchmark)

Aggregations

Coder (org.apache.beam.sdk.coders.Coder)119 KvCoder (org.apache.beam.sdk.coders.KvCoder)75 WindowedValue (org.apache.beam.sdk.util.WindowedValue)55 StringUtf8Coder (org.apache.beam.sdk.coders.StringUtf8Coder)44 Test (org.junit.Test)43 HashMap (java.util.HashMap)42 ArrayList (java.util.ArrayList)38 Map (java.util.Map)36 BoundedWindow (org.apache.beam.sdk.transforms.windowing.BoundedWindow)35 List (java.util.List)32 KV (org.apache.beam.sdk.values.KV)30 RunnerApi (org.apache.beam.model.pipeline.v1.RunnerApi)28 IterableCoder (org.apache.beam.sdk.coders.IterableCoder)28 PCollection (org.apache.beam.sdk.values.PCollection)28 TupleTag (org.apache.beam.sdk.values.TupleTag)24 ByteString (org.apache.beam.vendor.grpc.v1p43p2.com.google.protobuf.ByteString)23 IOException (java.io.IOException)22 PCollectionView (org.apache.beam.sdk.values.PCollectionView)22 Instant (org.joda.time.Instant)21 WindowingStrategy (org.apache.beam.sdk.values.WindowingStrategy)20