DataStream API编程指南之Connectors概述(十一)

1、预定义的Sources和Sinks

Flink内置了一些基本的数据源和接收器,并且总是可用的。预定义的数据源包括从文件、文件夹、scoket和集合以及迭代器中读取数据。预定义的数据Sinks支持写入数据到文件、stdout和stderr,以及套接字。

2、Boundled连接器

连接器提供了与各种第三方系统交互的代码。目前支持的系统有:

  • Apache Kafka (source/sink)
  • Apache Cassandra (sink)
  • Amazon Kinesis Streams (source/sink)
  • Elasticsearch (sink)
  • Hadoop FileSystem (sink)
  • RabbitMQ (source/sink)
  • Apache NiFi (source/sink)
  • Twitter Streaming API (source)
  • Google PubSub (source/sink)

请记住,要在应用程序中使用这些连接器,通常需要额外的第三方组件,例如用于数据存储(如HDFS,是第三方组件,因而需要启动相应的服务。对于HDFS来说,就是Namenode,和Datanode)或消息队列的服务器。还请注意,虽然本节中列出的流连接器是Flink项目的一部分,并且包含在源代码版本中,但它们不包含在二进制发行版中。也就是说,在提交Flink应用的时候,需要将相应的connector相关jar文件打包进入,否则提交作业找不到相应的类,从而导致失败。在相应的小节中可以找到进一步的说明。

3、Apache Bahir中的连接器

通过Apache Bahir发布其他用于Flink的流连接器,包括:

  • Apache ActiveMQ (source/sink)
  • Apache Flume (sink)
  • Redis (sink)
  • Akka (sink)
  • Netty (source)

4、连接Flink的其他方式

(1)通过异步I/O扩展数据

使用连接器并不是将数据导入Flink或从Flink导入数据的唯一方法。一种常见的模式是在Map或FlatMap中查询外部数据库或web服务,以扩展原始数据流。Flink提供一个用于异步I/O的API,以使其更容易有效的完成这种扩展。

流计算中经常需要与外部存储系统交互,比如需要关联 MySQL 中的某个表。一般来说,如果用同步 I/O 的方式,会造成系统中出现大的等待时间,影响吞吐和延迟。为了解决这个问题,异步 I/O 可以并发处理多个请求,提高吞吐,减少延迟。

(2)可查询状态

当一个Flink应用推送很多数据到一个外部数据存储时,这可能会成为I / O瓶颈。如果涉及到的数据读少写多,那么更好的方法是让外部应用程序从Flink中获取所需的数据。可查询状态接口允许按需查询Flink管理的状态,以启用此功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值