flink中的source作为整个stream中的入口,而sink作为整个stream的终点。

SourceFunction为所有flink中source的根接口,其定义了run()方法和cancel()方法。

在SourceFunction中的run()方法用以作为source向整个stream发出数据,并用以控制数据的进入。

在大部分的source中,会在run()方法中对数据的发出采用循环,而可以在cancel()方法中定义退出循环及退出数据发送的逻辑。

根据sourceFunction中给出的例子,一个标准的带有checkpointed source如下所示:

public class ExampleCountSource implements SourceFunction<Long>, CheckpointedFunction {
*      private long count = 0L;
*      private volatile boolean isRunning = true;
*
*      private transient ListState<Long> checkpointedCount;
*
*      public void run(SourceContext<T> ctx) {
*          while (isRunning && count < 1000) {
*              // this synchronized block ensures that state checkpointing,
*              // internal state updates and emission of elements are an atomic operation
*              synchronized (ctx.getCheckpointLock()) {
*                  ctx.collect(count);
*                  count++;
*              }
*          }
*      }
*
*      public void cancel() {
*          isRunning = false;
*      }
*
*      public void initializeState(FunctionInitializationContext context) {
*          this.checkpointedCount = context
*              .getOperatorStateStore()
*              .getListState(new ListStateDescriptor<>("count", Long.class));
*
*          if (context.isRestored()) {
*              for (Long count : this.checkpointedCount.get()) {
*                  this.count = count;
*              }
*          }
*      }
*
*      public void snapshotState(FunctionSnapshotContext context) {
*          this.checkpointedCount.clear();
*          this.checkpointedCount.add(count);
*      }
* }
* }

sourceContext是在source中具体发送数据的上下文,一般在source中通过其collect()来具体完成数据的发送。

sourceContext的方法主要有collect(),collectWithTimestamp(),emitWatermark(),markAsTemporarilyidle()方法。

其中collect()用以发出数据,而collectWithTimestamp()方法在发送数据的同时带上指定 的时间戳,emitWatermark()用以确定在某一时间之前的数据已经全部发出,markAsTemporarilyidle()方法则用以标记该source将处于空闲状态,将不会再继续发送数据。

Sink是流的重点,根接口是sinkFunction。

其重要的方法是invoke()方法,用以实现结果数据的处理逻辑,在sink的最简单实现DiscardingSink中,invoke()方法没有任何实现,则代表对结果数据不进行任何处理,直接废弃。

flink source和sink相关推荐

  1. flink source 同步_如何生成 Flink 作业的交互式火焰图?

    原标题:如何生成 Flink 作业的交互式火焰图? 简介:Flink 是目前最流行的大数据及流式计算框架之一,用户可以使用 Java/Scala/Python 的 DataStream 接口或者标准 ...

  2. flink source 同步_Flink面试题

    1.面试题一:应用架构 问题:公司怎么提交的实时任务,有多少 Job Manager? 解答: 1. 我们使用 yarn session 模式提交任务.每次提交都会创建一个新的 Flink 集群,为每 ...

  3. Flink-常用Source与Sink的使用汇总整理

    Flink-常用Source与Sink的使用汇总整理 基础结构 Source 本地数据源 端口数据源 文件数据源 Kafka-Source 自定义JDBC-Source 数据处理 SingleData ...

  4. Flink SQL 自定义 Sink

    1. 背景 2. 步骤 3.自定义 sink 代码 4. 使用 Redis Sink 5.详细解释 6.原理 7.参考 1.背景 内部要做 Flink SQL 平台,本文以自定义 Redis Sink ...

  5. 【Flink】Flink 自定义 redis sink

    1.概述 内部要做 Flink SQL 平台,本文以自定义 Redis Sink 为例来说明 Flink SQL 如何自定义 Sink 以及自定义完了之后如何使用 基于 Flink 1.11 2.步骤 ...

  6. [ETL] Flume 理论与demo(Taildir Source Hdfs Sink)

    一.Flume简介 1. Flume概述 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据: ...

  7. OpenShift 4 - Knative教程 (5) Eventing之Source和Sink

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.10环境中验证 文章目录 创建 Knative Eventing 环境 配置Source和Sink ...

  8. 三十九、Flume自定义Source、Sink

    上篇文章咱们基于Flume举了几个例子,包括它的扇入扇出等等.这篇文章我们主要来看一下怎样通过自定义Source和Sink来实现Flume的数据采集.关注专栏<破茧成蝶--大数据篇>,查看 ...

  9. (2)source和sink详解

    前面第一小节也提到了,Structured Streaming会增量的从source中读取数据,映射成一张表,对该表进行增量的查询分析,然后组合中间状态,再把结果输出到结果表,然后刷到外部存储系统si ...

最新文章

  1. 【Linux实用技术】LFS6.3构建实录
  2. bat批处理-上传jar包至私服
  3. 装机人员工具 - imsoft.cnblogs
  4. 设计模式在vue中的应用(五)
  5. android cpu hotplug,[MTK] [CPU DVFS/Hotplug]运行时,把CPU固定在特定频率/特定核数的办法...
  6. Gradle 工具的源码研究
  7. System.Timers.Timer 嵌套 System.Windows.Forms.Timer的问题
  8. Codeforces 1070A Find a Number(BFS) 2018-2019 ICPC, NEERC, Southern Subregional Contest Problem A
  9. Gartner:PaaS 和平台架构领域的 4 大趋势 | 技术头条
  10. 6月首批国产游戏获批:共55款 腾讯B站上榜
  11. Java并发编程之CyclicBarrier
  12. Effective Java (7) - 避免终止方法
  13. docker镜像-运行
  14. 超分辨 :SRCNN
  15. 迪恩素材教程资源图片下载站源码 dz社区论坛discuz 模板
  16. 常州2021高考成绩查询,2021年常州高考各高中成绩及本科升学率数据排名及分析...
  17. web python 取代js_web前端:JavaScript,只有你想不到
  18. Django建网站教程
  19. Android手机卡顿原因
  20. Part 1 函数、极限与连续

热门文章

  1. idea项目application.properties文件注释显示unicode编码
  2. MySQL数据库安装Version5.7
  3. Hadoop平台 以Parcel包安装CDH
  4. golang mysql大量连接_golang mysql 如何设置最大连接数和最大空闲连接数
  5. linux挂载华为存储fc,linux 挂载存储设备
  6. 如何使用 fstream 类进行文件的 I/O 处理
  7. Win7 64位系统,使用(IME)模式VS2010 编写 和 安装 输入法 教程(1)
  8. Prometheus-使用Prometheus监控Kubernetes集群
  9. D3.js以及通用JS(JavaScript)读取并解析server端JSON的注意事项
  10. 《日志管理与分析权威指南》一1.6 人、过程和技术