本文为《Flink大数据项目实战》学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程:

Flink大数据项目实战:http://t.cn/EJtKhaz

1. 各种Connector

1.1Connector是什么鬼

Connectors是数据进出Flink的一套接口和实现,可以实现Flink与各种存储、系统的连接

注意:数据进出Flink的方式不止Connectors,还有:

1.Async I/O(类Source能力):异步访问外部数据库

2.Queryable State(类Sink能力):当读多写少时,外部应用程序从Flink拉取需要的数据,而不是Flink把大量数据推入外部系统(后面再讲)

1.2哪些渠道获取connector

预定义Source和Sink:直接就用,无序引入额外依赖,一般用于测试、调试。

捆绑的Connectors:需要专门引入对应的依赖(按需),主要是实现外部数据进出Flink

1.Apache Kafka (source/sink)

2.Apache Cassandra (sink)

3.Amazon Kinesis Streams (source/sink)

4.Elasticsearch (sink)

5.Hadoop FileSystem (sink)

6.RabbitMQ (source/sink)

7.Apache NiFi (source/sink)

8.Twitter Streaming API (source)

Apache Bahir

1.Apache ActiveMQ (source/sink)

2.Apache Flume (sink)

3.Redis (sink)

4.Akka (sink)

5.Netty (source)

1.3预定义Source

预定义Source包含以下几类:

1.基于文件

readTextFile

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnviro nment();

DataStream<String> lines = env.readTextFile("file:///path");

readFile

DataStream<String> lines = env.readFile(inputFormat, "file:///path");

2.基于Socket

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnviro nment();

DataStream<String> socketLines = env .socketTextStream("localhost", 9998);

3.基于Elements 和Collections

fromElements

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnviro nment();

DataStream<String> names = env.fromElements("hello", "world", "!");

fromCollections

List<String> list = new ArrayList<String>(); list.add("Hello"); list.add("world");

list.add("!");

DataStream<String> names = env.fromCollection(list);

使用场景: 应用本地测试,但是流处理应用会出现Finished的状态

1.4预定义Sink

stream.print() /printToErr()(注: 线上应用杜绝使用,采用抽样打印或者日志的方式)

stream.writeAsText("/path/to/file")/ TextOutputFormat

stream.writeAsCsv(“/path/to/file”)/ CsvOutputFormat

writeUsingOutputFormat() / FileOutputFormat

stream.writeToSocket(host, port, SerializationSchema)

1.5队列系统Connector(捆绑)

支持Source 和 Sink

需要专门引入对应的依赖(按需),主要是实现外部数据进出Flink

1.Kafka(后续专门讲)

2.RabbitMQ

1.6存储系统Connector(捆绑)

只支持Sink

1.HDFS

2.ElasticSearch

3.Redis

4.Apache Cassandra

1.7 Source容错性保证

1.8 Sink容错性保证

2. 自定义Source与Sink

2.1自定义Source

1.实现SourceFunction(非并行,并行度为1)

1)适用配置流,通过广播与时间流做交互

2)继承SourceFuncion, 实现run 方法

3)cancel 方法需要处理好(cancel 应用的时候,这个方法会被调用)

4)基本不需要做容错性保证

2.实现ParallelSourceFunction

1)实现ParallelSourceFunction类或者继承RichParallelSourceFunction。

2)实现切分数据的逻辑

3)实现CheckpointedFunction接口,来保证容错保证。

4)Source 拥有回溯读取,可以减少的状态的保存。

3.继承RichParallelSourceFunction

2.2自定义Sink

1)实现SinkFunction 接口或者继承RichSinkFunction。

2)实现CheckpointedFunction, 做容错性保证。

Flink学习笔记:Connectors概述的更多相关文章

  1. Apache Flink学习笔记

    Apache Flink学习笔记 简介 大数据的计算引擎分为4代 第一代:Hadoop承载的MapReduce.它将计算分为两个阶段,分别为Map和Reduce.对于上层应用来说,就要想办法去拆分算法 ...

  2. Flink学习笔记:Connectors之kafka

    本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...

  3. Flink学习笔记-新一代Flink计算引擎

    说明:本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKh ...

  4. Flink学习笔记:Flink开发环境搭建

    本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...

  5. flink学习笔记:DataSream API

    本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...

  6. flink学习笔记-数据源(DataSource)

    说明:本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKh ...

  7. flink学习笔记-各种Time

    说明:本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKh ...

  8. Flink学习笔记:Flink Runtime

    本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...

  9. Flink学习笔记:Flink API 通用基本概念

    本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...

随机推荐

  1. [C#] 等待启动的进程执行完毕

    有能有时候我们启动了一个进程,必须等到此进程执行完毕,或是,一段时间, 关闭进程后再继续往下走. Example sample1 等待应用程序执行完毕 //等待应用程序执行完毕 private voi ...

  2. 「小程序JAVA实战」微信小程序简介(一)

    转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-01/ 一直想学习小程序,苦于比较忙,加班比较多没时间,其实这都是理由,很多时候习惯了搬砖,习惯了固 ...

  3. 13-EasyNetQ之发布者确认

    AMQP发布消息默认情况下是非事务性的,不能确保你的消息真正送达代理.AMQP可以去指定事务性发布,但是RabbitMQ这样会非常慢,我们没有让EasyNetQ API去支持此功能.为了高效的确保投递 ...

  4. OK6410之tftp下载内核,nfs…

    原文地址:OK6410之tftp下载内核,nfs挂载文件系统全过程详解[转]作者:千山我独行 由于工作的平台也是嵌入式,差不多的平台,所以一直就没有把自己买过来的ok6410板子好好玩玩.以前一直都是 ...

  5. c语言之字符串数组

    一.字符串与字符串数组 1.字符数组的定义 char array[100]; 2.字符数组初始化 char array[100] = {'a','b','c'};  //array[0] = 'a' ...

  6. Redis搭建(四):Sharding集群模式

    一. 方案 1. 介绍redis集群分为服务端集群(Cluster)和客户端分片(Sharding)服务端集群:redis3.0以上版本实现,使用哈希槽,计算key的CRC16结果再模16834.此处 ...

  7. ParksLink修改密码

    设置环境变量: ?set classpath=D:\ptc\PartsLink\srclib\jmxcore\WtLogR.jar;D:\ptc\PartsLink\srclib\log4j.jar; ...

  8. 把Oracle的数据导入到SQL2012中 导出数据--SSIS

    在ORACLE表和SQL Server表之间'转换'那步很重要,可以改变默认的字段数据类型,如image->text,decimal->int number  ->int (注意设置 ...

  9. Chrome,firefox,ie等浏览器空格&nbsp;宽度不一样

    方案一:使用其他字符代替空格 使用(&nbsp:)空格浏览器之间,显示的不一样,对不齐等现象. 解决方案: 用半角空格&ensp:或者全角空格&emsp:就可以了,&e ...

  10. ROS 下使用3D激光雷达 velodyne vlp-16

    Velodyne VLP16型激光雷达横向视角360°,纵向视角30° 系统和ROS版本:Ubuntu 14.04 ,ros indigo 1. 安装驱动 sudo apt-get install r ...