首页 > 其他分享 >Flink 1.17教程:输出算子(Sink)之连接到外部系统

Flink 1.17教程:输出算子(Sink)之连接到外部系统

时间:2023-09-10 10:03:10浏览次数:34  
标签:1.17 Flink 写入 addSink Sink 连接器 算子


输出算子(Sink)

Flink作为数据处理框架,最终还是要把计算处理的结果写入外部存储,为外部应用提供支持。

Flink 1.17教程:输出算子(Sink)之连接到外部系统_flink

连接到外部系统

Flink的DataStream API专门提供了向外部写入数据的方法:addSink。与addSource类似,addSink方法对应着一个“Sink”算子,主要就是用来实现与外部系统连接、并将数据提交写入的;Flink程序中所有对外的输出操作,一般都是利用Sink算子完成的。
Flink1.12以前,Sink算子的创建是通过调用DataStream的.addSink()方法实现的。

stream.addSink(new SinkFunction(…));

addSink方法同样需要传入一个参数,实现的是SinkFunction接口。在这个接口中只需要重写一个方法invoke(),用来将指定的值写入到外部系统中。这个方法在每条数据记录到来时都会调用。
Flink1.12开始,同样重构了Sink架构,

stream.sinkTo(…)

当然,Sink多数情况下同样并不需要我们自己实现。之前我们一直在使用的print方法其实就是一种Sink,它表示将数据流写入标准控制台打印输出。Flink官方为我们提供了一部分的框架的Sink连接器。如下图所示,列出了Flink官方目前支持的第三方系统连接器:

Flink 1.17教程:输出算子(Sink)之连接到外部系统_Apache_02

我们可以看到,像Kafka之类流式系统,Flink提供了完美对接,source/sink两端都能连接,可读可写;而对于Elasticsearch、JDBC等数据存储系统,则只提供了输出写入的sink连接器。

除Flink官方之外,Apache Bahir框架,也实现了一些其他第三方系统与Flink的连接器。

Flink 1.17教程:输出算子(Sink)之连接到外部系统_大数据_03

除此以外,就需要用户自定义实现sink连接器了。


标签:1.17,Flink,写入,addSink,Sink,连接器,算子
From: https://blog.51cto.com/zhangxueliang/7423601

相关文章

  • Flink 1.17教程:基本合流操作
    基本合流操作在实际应用中,我们经常会遇到来源不同的多条流,需要将它们的数据进行联合处理。所以Flink中合流的操作会更加普遍,对应的API也更加丰富。联合(Union)最简单的合流操作,就是直接将多条流合在一起,叫作流的“联合”(union)。联合操作要求必须流中的数据类型必须相同,合并之后的新流......
  • Flink 1.17教程:输出算子之输出到文件
    输出到文件Flink专门提供了一个流式文件系统的连接器:FileSink,为批处理和流处理提供了一个统一的Sink,它可以将分区文件写入Flink支持的文件系统。FileSink支持行编码(Row-encoded)和批量编码(Bulk-encoded)格式。这两种不同的方式都有各自的构建器(builder),可以直接调用FileSink的静态方......
  • flink kerberos认证源码剖析
    文章目录01引言02flink的安全机制03源码流程分析3.1程序入口3.2安全模块安装3.3模块安装源码04文末01引言官方的文档:https://nightlies.apache.org/flink/flink-docs-master/docs/deployment/security/security-kerberos/我们都知道,如果某个大数据组件(如:hadoop、flink等)......
  • FLink
    java.util.concurrent.TimeoutException:Invocationof[RemoteRpcInvocation(TaskExecutorGateway.requestSlot(SlotID,JobID,AllocationID,ResourceProfile,String,ResourceManagerId,Time))]atrecipient[akka.tcp://flink@teste-34:40647/user/rpc/taskmanager_......
  • Flink kafka source
    kafkasource接收kafka的数据<!--Kafka相关依赖--><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>2.8.0</version>......
  • 43、Flink之Hive 读写及详细验证示例
    Flink系列文章[1、Flink部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接][13、Flink的tableapi与sql的基本概念、通用api介绍及入门示例][14、Flink的tableapi与sql之数据类型:内置数据类型以及它们的属性][15、Flink的t......
  • Flink SQL基本语法
    在flinksql中,对表名、字段名、函数名等是严格区分大小写的,为了兼容hive等其他仓库,建议建表时,表名和字段名都采用下划线连接单词的方式,以避免大小写问题。比如hive,是不区分大小写的,所有大写字母最终都会被系统转化为小写字母,此时使用flinksql去读写hive,出现大写字母时......
  • Flink高级特性(2)
    watermark水位线处理乱序数据流从数据产生到DataSource,再到具体的算子,中间是有一个过程和时间,有可能会导致数据乱序问题,通过watermark+EventTime来处理。作用:由于网络延迟等原因,一条数据会迟到计算,比如使用eventtime来划分窗口,我们知道窗口中的数据是计算一段时间的数据,如果一......
  • 33、Flink之hive介绍与简单示例
    文章目录Flink系列文章一、Table&SQLConnectors示例:ApacheHive1、支持的Hive版本2、依赖项1)、使用Flink提供的Hivejar2)、用户定义的依赖项3)、移动plannerjar包3、Maven依赖4、连接到Hive5、DDL&DML本文介绍了ApacheHive连接器的使用,以具体的示例演示了通过java和......
  • Flink教程:并行度
    Flink的并行度介绍一下?概述Flink的并行度(Parallelism)是指在Flink作业中并行执行任务的程度。它决定了作业中任务的数量以及任务之间的数据划分和分配方式。并行度是一个重要的概念,对于实现高吞吐量和低延迟的流处理非常关键。在Flink中,有两个级别的并行度可以进行配置:作业级别并行......