Flink学习笔记:Connectors概述
本文为《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概述的更多相关文章
- Apache Flink学习笔记
Apache Flink学习笔记 简介 大数据的计算引擎分为4代 第一代:Hadoop承载的MapReduce.它将计算分为两个阶段,分别为Map和Reduce.对于上层应用来说,就要想办法去拆分算法 ...
- Flink学习笔记:Connectors之kafka
本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...
- Flink学习笔记-新一代Flink计算引擎
说明:本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKh ...
- Flink学习笔记:Flink开发环境搭建
本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...
- flink学习笔记:DataSream API
本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...
- flink学习笔记-数据源(DataSource)
说明:本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKh ...
- flink学习笔记-各种Time
说明:本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKh ...
- Flink学习笔记:Flink Runtime
本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...
- Flink学习笔记:Flink API 通用基本概念
本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...
随机推荐
- nand中间出现坏块,无法正常启动内…
我板子的启动过程如下: ..showlogo.. Flash: 1 MB NAND: SLC detected.256 MB In: serial Out: serial ...
- springBean之BeanFactory与ApplicationContext
一.主要区别: 两者都是通过xml配置文件加载bean,ApplicationContext和BeanFacotry相比,提供了更多的扩展功能,但其主要区别在于后者是延迟加载,如果Bean的某一个属性 ...
- Python文件修改和常用方法
为了更好地说明接下来的文件修改操作,我们有必要先来学习下文件操作的常用方法. 一.文件处理中的常用方法 #!/usr/bin/env python3 #-*- coding:utf-8 -*- # w ...
- java基础之匿名内部类
内部类: 概述: 类里边还有一个类, 里边那个类叫内部类, 外边那个类叫外部类. 分类: 成员内部类: 定义在成员位置的内部类. 局部内部类: 定义在局部位置的内部类. 格式: new 类名或者接口名 ...
- Lambda02 函数式接口
1 java8默认提供的函数式接口 1.1 Predicate /* * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rig ...
- Python04 range()方法的使用、turtle.textinput()方法和write()的使用、turtle.numinput()的使用
1 range() 方法的使用 1.1 range方法介绍 range方法会返回一个range类型的对象,该对象会根据range方法的参数产生一些列整型数据 技巧01:range方法有三个参数,第一个 ...
- Solidity字符串拼接实现oraclize动态查询
solidity本身没有字符串拼接功能,但是如果你恰巧要用oraclize api,那么可以使用oraclize api中的字符串拼接方法(strConcat).之所以oraclize api里会有s ...
- 专题2-通过按键玩中断\第1课-中断处理流程深度剖析-lesson1
中断概念 1.中断生命周期 串口先产生一个事件,该事件传送到中断控制器里面,中断控制器会进行相应过滤,能通过过滤,那么就交给CPU去处理. 2.中断源 2440芯片手册 6410芯片手册 3.中断过滤 ...
- Gabor filter与Gabor transform
https://en.wikipedia.org/wiki/G%C3%A1bor Gabor filter:a linear filter used in image processing一种线性滤波 ...
- 20169219 SEED SQL注入实验
实验环境SEED Ubuntu镜像 环境配置 实验需要三样东西,Firefox.apache.phpBB2(镜像中已有): 1.运行Apache Server:只需运行命令sudo service a ...