flink source和sink
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相关推荐
- flink source 同步_如何生成 Flink 作业的交互式火焰图?
原标题:如何生成 Flink 作业的交互式火焰图? 简介:Flink 是目前最流行的大数据及流式计算框架之一,用户可以使用 Java/Scala/Python 的 DataStream 接口或者标准 ...
- flink source 同步_Flink面试题
1.面试题一:应用架构 问题:公司怎么提交的实时任务,有多少 Job Manager? 解答: 1. 我们使用 yarn session 模式提交任务.每次提交都会创建一个新的 Flink 集群,为每 ...
- Flink-常用Source与Sink的使用汇总整理
Flink-常用Source与Sink的使用汇总整理 基础结构 Source 本地数据源 端口数据源 文件数据源 Kafka-Source 自定义JDBC-Source 数据处理 SingleData ...
- Flink SQL 自定义 Sink
1. 背景 2. 步骤 3.自定义 sink 代码 4. 使用 Redis Sink 5.详细解释 6.原理 7.参考 1.背景 内部要做 Flink SQL 平台,本文以自定义 Redis Sink ...
- 【Flink】Flink 自定义 redis sink
1.概述 内部要做 Flink SQL 平台,本文以自定义 Redis Sink 为例来说明 Flink SQL 如何自定义 Sink 以及自定义完了之后如何使用 基于 Flink 1.11 2.步骤 ...
- [ETL] Flume 理论与demo(Taildir Source Hdfs Sink)
一.Flume简介 1. Flume概述 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据: ...
- OpenShift 4 - Knative教程 (5) Eventing之Source和Sink
<OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.10环境中验证 文章目录 创建 Knative Eventing 环境 配置Source和Sink ...
- 三十九、Flume自定义Source、Sink
上篇文章咱们基于Flume举了几个例子,包括它的扇入扇出等等.这篇文章我们主要来看一下怎样通过自定义Source和Sink来实现Flume的数据采集.关注专栏<破茧成蝶--大数据篇>,查看 ...
- (2)source和sink详解
前面第一小节也提到了,Structured Streaming会增量的从source中读取数据,映射成一张表,对该表进行增量的查询分析,然后组合中间状态,再把结果输出到结果表,然后刷到外部存储系统si ...
最新文章
- 【Linux实用技术】LFS6.3构建实录
- bat批处理-上传jar包至私服
- 装机人员工具 - imsoft.cnblogs
- 设计模式在vue中的应用(五)
- android cpu hotplug,[MTK] [CPU DVFS/Hotplug]运行时,把CPU固定在特定频率/特定核数的办法...
- Gradle 工具的源码研究
- System.Timers.Timer 嵌套 System.Windows.Forms.Timer的问题
- Codeforces 1070A Find a Number(BFS) 2018-2019 ICPC, NEERC, Southern Subregional Contest Problem A
- Gartner:PaaS 和平台架构领域的 4 大趋势 | 技术头条
- 6月首批国产游戏获批:共55款 腾讯B站上榜
- Java并发编程之CyclicBarrier
- Effective Java (7) - 避免终止方法
- docker镜像-运行
- 超分辨 :SRCNN
- 迪恩素材教程资源图片下载站源码 dz社区论坛discuz 模板
- 常州2021高考成绩查询,2021年常州高考各高中成绩及本科升学率数据排名及分析...
- web python 取代js_web前端:JavaScript,只有你想不到
- Django建网站教程
- Android手机卡顿原因
- Part 1 函数、极限与连续
热门文章
- idea项目application.properties文件注释显示unicode编码
- MySQL数据库安装Version5.7
- Hadoop平台 以Parcel包安装CDH
- golang mysql大量连接_golang mysql 如何设置最大连接数和最大空闲连接数
- linux挂载华为存储fc,linux 挂载存储设备
- 如何使用 fstream 类进行文件的 I/O 处理
- Win7 64位系统,使用(IME)模式VS2010 编写 和 安装 输入法 教程(1)
- Prometheus-使用Prometheus监控Kubernetes集群
- D3.js以及通用JS(JavaScript)读取并解析server端JSON的注意事项
- 《日志管理与分析权威指南》一1.6 人、过程和技术