@Internal public abstract class BeamPythonFunctionRunner extends Object implements PythonFunctionRunner
BeamPythonFunctionRunner
used to execute Python functions.Modifier and Type | Field and Description |
---|---|
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 LinkedBlockingQueue<byte[]> |
resultBuffer
The Python function execution result receiver.
|
protected Tuple2<byte[],Integer> |
resultTuple
The Python function execution result tuple.
|
Constructor and Description |
---|
BeamPythonFunctionRunner(String taskName,
PythonEnvironmentManager environmentManager,
String functionUrn,
Map<String,String> jobOptions,
FlinkMetricContainer flinkMetricContainer,
KeyedStateBackend keyedStateBackend,
TypeSerializer keySerializer,
MemoryManager memoryManager,
double managedMemoryFraction) |
Modifier and Type | Method and Description |
---|---|
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 org.apache.beam.model.pipeline.v1.RunnerApi.Coder |
getInputCoderProto() |
protected abstract org.apache.beam.model.pipeline.v1.RunnerApi.Coder |
getOutputCoderProto() |
protected abstract byte[] |
getUserDefinedFunctionsProtoBytes() |
void |
open(PythonConfig config)
Prepares the Python function runner, such as preparing the Python execution environment, etc.
|
Tuple2<byte[],Integer> |
pollResult()
Retrieves the Python function result.
|
void |
process(byte[] data)
Executes the Python function with the input byte array.
|
protected void |
startBundle() |
protected static final org.slf4j.Logger LOG
protected final Tuple2<byte[],Integer> resultTuple
protected transient LinkedBlockingQueue<byte[]> resultBuffer
protected transient org.apache.beam.sdk.fn.data.FnDataReceiver<org.apache.beam.sdk.util.WindowedValue<byte[]>> mainInputReceiver
public BeamPythonFunctionRunner(String taskName, PythonEnvironmentManager environmentManager, String functionUrn, Map<String,String> jobOptions, FlinkMetricContainer flinkMetricContainer, @Nullable KeyedStateBackend keyedStateBackend, @Nullable TypeSerializer keySerializer, @Nullable MemoryManager memoryManager, double managedMemoryFraction)
public void open(PythonConfig config) throws Exception
PythonFunctionRunner
open
in interface PythonFunctionRunner
Exception
public void close() throws Exception
PythonFunctionRunner
close
in interface PythonFunctionRunner
Exception
public void process(byte[] data) throws Exception
PythonFunctionRunner
process
in interface PythonFunctionRunner
data
- the byte array data.Exception
public Tuple2<byte[],Integer> pollResult() throws Exception
PythonFunctionRunner
pollResult
in interface PythonFunctionRunner
null
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.Exception
public void flush() throws Exception
PythonFunctionRunner
flush
in interface PythonFunctionRunner
Exception
public org.apache.beam.runners.fnexecution.control.JobBundleFactory createJobBundleFactory(org.apache.beam.vendor.grpc.v1p26p0.com.google.protobuf.Struct pipelineOptions) throws Exception
Exception
protected void startBundle()
protected abstract byte[] getUserDefinedFunctionsProtoBytes()
protected abstract org.apache.beam.model.pipeline.v1.RunnerApi.Coder getInputCoderProto()
protected abstract org.apache.beam.model.pipeline.v1.RunnerApi.Coder getOutputCoderProto()
Copyright © 2014–2021 The Apache Software Foundation. All rights reserved.