Flink – Stream Task执行过程

发布时间:2017-7-9 7:23:41编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Flink – Stream Task执行过程 ",主要涉及到Flink – Stream Task执行过程 方面的内容,对于Flink – Stream Task执行过程 感兴趣的同学可以参考一下。

Flink – Stream Task执行过程

Task.run

if (invokable instanceof StatefulTask) {
StatefulTask op = (StatefulTask) invokable;
op.setInitialState(taskStateHandles);
}
// run the invokable
invokable.invoke();
 

invokable是StreamTask

StreamTask.invoke

public final void invoke() throws Exception {
    run();
}
 

StreamTask是抽象基类,比如,OneInputStreamTask

protected void run() throws Exception {
        // cache processor reference on the stack, to make the code more JIT friendly
        final StreamInputProcessor<IN> inputProcessor = this.inputProcessor;

        while (running && inputProcessor.processInput()) {
            // all the work happens in the "processInput" method
        }
    }

StreamInputProcessor.processInput

StreamRecord<IN> record = recordOrMark.asRecord();
                        synchronized (lock) {
                            numRecordsIn.inc();
                            streamOperator.setKeyContextElement1(record);
                            streamOperator.processElement(record);
                        }

OneInputStreamOperator.processElement

StreamSink实现OneInputStreamOperator接口

public class StreamSink<IN> extends AbstractUdfStreamOperator<Object, SinkFunction<IN>>
        implements OneInputStreamOperator<IN, Object> {

    @Override
    public void processElement(StreamRecord<IN> element) throws Exception {
        userFunction.invoke(element.getValue());
    }

最终调用到SinkFunction的invoke


上一篇:mysql优化1 - jay
下一篇:java-方法 - 阳光

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款