@Internal public abstract class BeamPythonFunctionRunner extends Object implements PythonFunctionRunner
BeamPythonFunctionRunner used to execute Python functions.| Modifier and Type | Field and Description |
|---|---|
protected FlinkFnApi.CoderInfoDescriptor |
inputCoderDescriptor |
protected static org.slf4j.Logger |
LOG |
protected org.apache.beam.sdk.fn.data.FnDataReceiver<org.apache.beam.sdk.util.WindowedValue<byte[]>> |
mainInputReceiver
The receiver which forwards the input elements to a remote environment for processing.
|
protected FlinkFnApi.CoderInfoDescriptor |
outputCoderDescriptor |
protected LinkedBlockingQueue<byte[]> |
resultBuffer
Buffers the Python function execution result which has still not been processed.
|
| Constructor and Description |
|---|
BeamPythonFunctionRunner(String taskName,
PythonEnvironmentManager environmentManager,
Map<String,String> jobOptions,
FlinkMetricContainer flinkMetricContainer,
org.apache.flink.runtime.state.KeyedStateBackend keyedStateBackend,
org.apache.flink.api.common.typeutils.TypeSerializer keySerializer,
org.apache.flink.api.common.typeutils.TypeSerializer namespaceSerializer,
TimerRegistration timerRegistration,
org.apache.flink.runtime.memory.MemoryManager memoryManager,
double managedMemoryFraction,
FlinkFnApi.CoderInfoDescriptor inputCoderDescriptor,
FlinkFnApi.CoderInfoDescriptor outputCoderDescriptor) |
| Modifier and Type | Method and Description |
|---|---|
protected abstract void |
buildTransforms(org.apache.beam.model.pipeline.v1.RunnerApi.Components.Builder componentsBuilder) |
void |
close()
Tear-down the Python function runner.
|
org.apache.beam.runners.fnexecution.control.JobBundleFactory |
createJobBundleFactory(org.apache.beam.vendor.grpc.v1p26p0.com.google.protobuf.Struct pipelineOptions) |
void |
flush()
Forces to finish the processing of the current bundle of elements.
|
protected abstract Optional<org.apache.beam.model.pipeline.v1.RunnerApi.Coder> |
getOptionalTimerCoderProto() |
protected abstract List<org.apache.beam.runners.core.construction.graph.TimerReference> |
getTimers(org.apache.beam.model.pipeline.v1.RunnerApi.Components components) |
void |
notifyNoMoreResults()
Interrupts the progress of takeResult.
|
void |
open(PythonConfig config)
Prepares the Python function runner, such as preparing the Python execution environment, etc.
|
org.apache.flink.api.java.tuple.Tuple2<byte[],Integer> |
pollResult()
Retrieves the Python function result.
|
void |
process(byte[] data)
Executes the Python function with the input byte array.
|
void |
processTimer(byte[] timerData)
Send the triggered timer to the Python function.
|
protected void |
startBundle() |
org.apache.flink.api.java.tuple.Tuple2<byte[],Integer> |
takeResult()
Retrieves the Python function result, waiting if necessary until an element becomes
available.
|
protected static final org.slf4j.Logger LOG
protected final FlinkFnApi.CoderInfoDescriptor inputCoderDescriptor
protected final FlinkFnApi.CoderInfoDescriptor outputCoderDescriptor
@VisibleForTesting protected transient LinkedBlockingQueue<byte[]> resultBuffer
@VisibleForTesting protected transient org.apache.beam.sdk.fn.data.FnDataReceiver<org.apache.beam.sdk.util.WindowedValue<byte[]>> mainInputReceiver
public BeamPythonFunctionRunner(String taskName, PythonEnvironmentManager environmentManager, Map<String,String> jobOptions, @Nullable FlinkMetricContainer flinkMetricContainer, @Nullable org.apache.flink.runtime.state.KeyedStateBackend keyedStateBackend, @Nullable org.apache.flink.api.common.typeutils.TypeSerializer keySerializer, @Nullable org.apache.flink.api.common.typeutils.TypeSerializer namespaceSerializer, @Nullable TimerRegistration timerRegistration, org.apache.flink.runtime.memory.MemoryManager memoryManager, double managedMemoryFraction, FlinkFnApi.CoderInfoDescriptor inputCoderDescriptor, FlinkFnApi.CoderInfoDescriptor outputCoderDescriptor)
public void open(PythonConfig config) throws Exception
PythonFunctionRunneropen in interface PythonFunctionRunnerExceptionpublic void close()
throws Exception
PythonFunctionRunnerclose in interface PythonFunctionRunnerExceptionpublic void process(byte[] data)
throws Exception
PythonFunctionRunnerprocess in interface PythonFunctionRunnerdata - the byte array data.Exceptionpublic void processTimer(byte[] timerData)
throws Exception
PythonFunctionRunnerprocessTimer in interface PythonFunctionRunnerException@VisibleForTesting protected void startBundle()
public org.apache.flink.api.java.tuple.Tuple2<byte[],Integer> pollResult() throws Exception
PythonFunctionRunnerpollResult in interface PythonFunctionRunnernull if the result buffer is
empty. f0 means the byte array buffer which stores the Python function result. f1 means
the length of the Python function result byte array.Exceptionpublic org.apache.flink.api.java.tuple.Tuple2<byte[],Integer> takeResult() throws Exception
PythonFunctionRunnertakeResult in interface PythonFunctionRunnerExceptionpublic void flush()
throws Exception
PythonFunctionRunnerflush in interface PythonFunctionRunnerExceptionpublic void notifyNoMoreResults()
protected abstract void buildTransforms(org.apache.beam.model.pipeline.v1.RunnerApi.Components.Builder componentsBuilder)
protected abstract List<org.apache.beam.runners.core.construction.graph.TimerReference> getTimers(org.apache.beam.model.pipeline.v1.RunnerApi.Components components)
protected abstract Optional<org.apache.beam.model.pipeline.v1.RunnerApi.Coder> getOptionalTimerCoderProto()
Copyright © 2014–2021 The Apache Software Foundation. All rights reserved.