@Internal public abstract class BeamPythonFunctionRunner extends Object implements PythonFunctionRunner
BeamPythonFunctionRunner used to execute Python functions.| 限定符和类型 | 字段和说明 |
|---|---|
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.
|
| 构造器和说明 |
|---|
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) |
| 限定符和类型 | 方法和说明 |
|---|---|
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 在接口中 PythonFunctionRunnerExceptionpublic void close()
throws Exception
PythonFunctionRunnerclose 在接口中 PythonFunctionRunnerExceptionpublic void process(byte[] data)
throws Exception
PythonFunctionRunnerprocess 在接口中 PythonFunctionRunnerdata - the byte array data.Exceptionpublic void processTimer(byte[] timerData)
throws Exception
PythonFunctionRunnerprocessTimer 在接口中 PythonFunctionRunnerException@VisibleForTesting protected void startBundle()
public org.apache.flink.api.java.tuple.Tuple2<byte[],Integer> pollResult() throws Exception
PythonFunctionRunnerpollResult 在接口中 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 在接口中 PythonFunctionRunnerExceptionpublic void flush()
throws Exception
PythonFunctionRunnerflush 在接口中 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–2022 The Apache Software Foundation. All rights reserved.