Apache Flink
vincent_hahaha
haha ha
展开
-
Flink countWindow窗口
窗口在处理数据前,会对数据做分流,有两种控制流的方式,按照数据流划分:Keyed和Non-Keyed WindowsKeyed Windows:就是有按照某个字段分组的数据流使用的窗口,可以理解为按照原始数据流中的某个key进行分类,拥有同一个key值的数据流将为进入同一个window,多个窗口并行的逻辑流。stream .keyBy(...) // ...原创 2019-10-18 10:45:50 · 5899 阅读 · 0 评论 -
Flink的重启策略
Flink的重启策略Flink支持不同的重启策略,这些重启策略控制着job失败后如何重启。集群可以通过默认的重启策略来重启,这个默认的重启策略通常在未指定重启策略的情况下使用,而如果Job提交的时候指定了重启策略,这个重启策略就会覆盖掉集群的默认重启策略。概览集群在启动时会伴随一个默认的重启策略,在没有定义具体重启策略时,会使用该默认重启策略,如果在工作提交时指定了一个重启策略,那么该策略会...转载 2019-10-17 14:13:53 · 261 阅读 · 0 评论 -
Flink 广播变量
广播变量简介在Flink中,同一个算子可能存在若干个不同的并行实例,计算过程可能不在同一个Slot中进行,不同算子之间更是如此,因此不同算子的计算数据之间不能像Java数组之间一样互相访问,而广播变量Broadcast便是解决这种情况的。我们可以把广播变量理解为是一个公共的共享变量,我们可以把一个dataset 数据集广播出去,然后不同的task在节点上都能够获取到,这个数据在每个节点上只会存...转载 2019-10-16 15:31:23 · 343 阅读 · 0 评论 -
Flink 读取文本文件,聚合每一行的uid
文本数据大约30W行,内容格式如下:001 jack001 jack001 rose004 tom004 jerry001 sofia005 natasha006 catalina006 jennifer要求输出结果如下:001 [jack,rose,sofia]004 [tom,jerry]005 [natasha]006 [catalina, jennifer]...原创 2019-10-16 11:34:10 · 3693 阅读 · 0 评论 -
Flink异步io应用场景之流表join维表
简介维度表,作为数据仓库里面的概念,是维度属性的集合,比如时间维、地点维;可以是一个mysql或者cassandra,redis等存储,甚至是自己定义的一些api。流表是kafka等流式数据。根据流表join维表的字段去异步查询维表。举个例子流表:kafka id1,id2,id3三列维表:mysql id,age,namesql:select id1,id2,id3,age,nam...原创 2019-10-14 11:21:41 · 769 阅读 · 0 评论 -
flink异步io应用场景之流表join维表
背景Async I/O 是阿里巴巴贡献给社区的一个呼声非常高的特性,于1.2版本引入。主要目的是为了解决与外部系统交互时网络延迟成为了系统瓶颈的问题。流计算系统中经常需要与外部系统进行交互,比如需要查询外部数据库以关联上用户的额外信息。通常,我们的实现方式是向数据库发送用户a的查询请求,然后等待结果返回,在这之前,我们无法发送用户b的查询请求。这是一种同步访问的模式,如下图左边所示。图中棕...转载 2019-10-12 18:36:18 · 938 阅读 · 0 评论 -
Flink Operator之CoGroup、Join以及Connect
Flink 双数据流转换为单数据流操作的运算有cogroup, join和coflatmap。下面为大家对比介绍下这3个运算的功能和用法。Join:只输出条件匹配的元素对。CoGroup: 除了输出匹配的元素对以外,未能匹配的元素也会输出。CoFlatMap:没有匹配条件,不进行匹配,分别处理两个流的元素。在此基础上完全可以实现join和cogroup的功能,比他们使用上更加自由。对于...原创 2019-10-06 00:43:47 · 1082 阅读 · 0 评论 -
Flink 分别读取kafka和mysql作为source
需求首先从kafka中读取数据,然后从mysql中读取数据,然后将这两个数据进行合并处理。环境Flink 1.8.2实现public static void main(String[] args) throws Exception { StreamExecutionEnvironment executionEnvironment = StreamExecutionEn...原创 2019-10-04 23:53:16 · 2350 阅读 · 3 评论 -
Flink三种运行模式安装部署
环境Flink 1.8.2jdk 1.8hadoop 2.8.5Local模式在Local模式下仅模拟cluster集群,仅启动JobManager完成应用的运行。JobManager进程信息如下:启动:./bin/start-cluster.sh停止:./bin/stop-cluster.sh提交作业方式./flink run -p 1 ../examples/batch/...原创 2019-09-30 14:46:08 · 1924 阅读 · 0 评论 -
Apache Flink 读取本地文件,处理数据,导入ES
需求本地有一份文件使用Flink读取本地数据源处理数据,导入ES中提交Flink作业环境Flink :1.8.2Elasticsearch:6.2.3JDK:1.8pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0...原创 2019-09-29 15:56:43 · 7289 阅读 · 0 评论 -
Apache Flink 零基础入门(二十一)Flink HistoryServer概述与配置
之前我们做了Flink的开发,开发完成之后就需要进行监控。Flink 有一个History Server可以在相关Flink 集群关闭之后,还可以查看一些信息。也就是一些作业运行完成之后,可以用History Server查看运行的统计信息。同时,还暴露了一些RestAPI,允许http进行请求。修改配置文件conf/flink-conf.yaml:jobmanager.archive....原创 2019-09-23 16:12:21 · 1616 阅读 · 0 评论 -
Flink分布式standalone部署方式(第二种方式)
接着上面一节中介绍的,浏览器中输入地址http://swarm-manager:8088/cluster,输出如下:拿到application_1569070146084_0001,然后在控制台先kill掉:./yarn application -kill application_1569070146084_0001Run a single Flink job on YARN之前介绍了...原创 2019-09-23 10:23:25 · 1096 阅读 · 0 评论 -
Flink分布式standalone部署方式(第一种方式)
提前准备java 版本 1.8.0_101flink 版本 flink-1.8.2-bin-scala_2.11.tgzhadoop 版本 hadoop-2.8.5.tar.gzflink-hadoop lib 版本 flink-shaded-hadoop-2-uber-2.6.5-7.0.jar配置环境变量JAVA_HOME=/usr/jdk1.8.0_101FLINK_HOM...原创 2019-09-21 21:37:09 · 678 阅读 · 0 评论 -
Apache Flink 零基础入门(二十)Flink部署与作业的提交
之前我们都是基于Idea在本地进行开发,这种方式很适合开发以及测试,但是开发完之后,如何提交到服务器中运行?Flink单机部署方式本地开发和测试过程中非常有用,只要把代码放到服务器直接运行。前置条件jdk8maven3下载解压Flink,这里直接下载源码编译,直接从github上下载源码https://github.com/apache/flink/releases 选择1.8.1然...原创 2019-09-18 18:43:11 · 526 阅读 · 0 评论 -
Apache Flink 零基础入门(二十)Flink kafka connector
内置source和sink内置source包括从文件读取,从文件夹读取,从socket中读取、从集合或者迭代器中读取。内置的sink包括写文件、控制台输出、socket内置connectorsApache Kafka(source/sink) Apache Cassandra(sink) Amazon Kinesis Streams(source/sink) Elastic...原创 2019-09-16 17:18:00 · 358 阅读 · 0 评论 -
Apache Flink 零基础入门(十九)Flink windows和Time操作
Time类型在Flink中常用的Time类型:处理时间 摄取时间 事件时间处理时间是上图中,最后一步的处理时间,表示服务器中执行相关操作的处理时间。例如一些算子操作时间,在服务器上面的时间。如果你以处理时间作为流处理的时间处理方式,那么所有的基于时间的操作都会使用服务器的时间,来运行相关的操作。例如:一个小时的处理时间窗口,将会包含一个小时内的到达服务器内的所有数据。例如...原创 2019-09-12 16:45:00 · 257 阅读 · 0 评论 -
Apache Flink 零基础入门(十八)Flink Table API&SQL
什么是Flink关系型API?虽然Flink已经支持了DataSet和DataStream API,但是有没有一种更好的方式去编程,而不用关心具体的API实现?不需要去了解Java和Scala的具体实现。Flink provides three layered APIs. Each API offers a different trade-off between conciseness ...原创 2019-09-11 17:03:00 · 406 阅读 · 0 评论 -
Apache Flink 零基础入门(十七)Flink 自定义Sink
需求:socket发送过来的数据,把String类型转成对象,然后把Java对象保存到Mysql数据库中。创建数据库和表create database imooc_flink;create table student(id int(11) NOT NULL AUTO_INCREMENT,name varchar(25),age int(10),primary key(id))...原创 2019-09-11 15:14:00 · 425 阅读 · 0 评论 -
Apache Flink 零基础入门(十六)Flink DataStream transformation
Operators transform one or more DataStreams into a new DataStream.Operators操作转换一个或多个DataStream到一个新的DataStream 。filter functionScalaobject DataStreamTransformationApp { def main(args: Arr...原创 2019-09-10 19:06:00 · 179 阅读 · 1 评论 -
Apache Flink 零基础入门(十五)Flink DataStream编程(如何自定义DataSource)
数据源可以通过StreamExecutionEnvironment.addSource(sourceFunction)方式来创建,Flink也提供了一些内置的数据源方便使用,例如readTextFile(path) readFile(),当然,也可以写一个自定义的数据源(可以通过实现SourceFunction方法,但是无法并行执行。或者实现可以并行实现的接口ParallelSourceFunct...原创 2019-09-10 17:32:00 · 669 阅读 · 0 评论 -
Apache Flink 零基础入门(十四)Flink 分布式缓存
Apache Flink 提供了一个分布式缓存,类似于Hadoop,用户可以并行获取数据。通过注册一个文件或者文件夹到本地或者远程HDFS等,在getExecutionEnvironment中指定一个名字就可以。当应用程序执行时,Flink会自动拷贝这个文件或者文件夹到所有worker进程中。用户的Function通过指定的名字可以查找这个文件或者文件夹中的内容。Scaladef m...原创 2019-09-10 14:43:00 · 302 阅读 · 0 评论 -
Apache Flink 零基础入门(十三)Flink 计数器
需求:当一个文本文件进入时,有可能会有一些格式乱码的错误行,如何统计哪些错误行?如何提取错误行 def main(args: Array[String]): Unit = { val env = ExecutionEnvironment.getExecutionEnvironment val data = env.fromElements("hadoop","spark"...原创 2019-09-10 11:18:00 · 1266 阅读 · 5 评论 -
Apache Flink 零基础入门(十二)Flink sink
将DataSet中的数据Sink到哪里去。使用的是对应的OutPutFormat,也可以使用自定义的sink,有可能写到hbase中,hdfs中。writeAsText() / TextOutputFormat ,以String的形式写入 writeAsCsv(...) / CsvOutputFormat,以CSV的方式写进去 print() / printToErr() / ...原创 2019-09-10 09:55:00 · 272 阅读 · 0 评论 -
Apache Flink 零基础入门(十一)Flink transformation
前面讲了常用的DataSource的用法,DataSource其实是把数据加载进来,加载进来之后就需要做Transformation操作了。Data transformations transform one or more DataSets into a new DataSet. Programs can combine multiple transformations into soph...原创 2019-09-05 17:31:00 · 194 阅读 · 0 评论 -
Apache Flink 零基础入门(十)Flink DataSet编程
DataSet programs in Flink are regular programs that implement transformations on data sets (e.g., filtering, mapping, joining, grouping). The data sets are initially created from certain sources (e.g...原创 2019-09-04 10:12:00 · 163 阅读 · 0 评论 -
Apache Flink 零基础入门(九)Flink支持哪些数据类型
Flink有7种数据类型分别是:Java TuplesandScala Case Classes Java POJOs Primitive Types Regular Classes Values Hadoop Writables Special TypesTupleTuple是一个组合数据类型,包含了固定数量的不同类别的字段。范围可以从Tuple0到Tuple25,表...原创 2019-08-29 18:12:00 · 371 阅读 · 0 评论 -
Apache Flink 零基础入门(八)Flink中指定算子的方式
我们之前在使用flatMap时,传了一个new FlatMapFunction匿名内部类。而这仅仅是其中的一种方式。方式一:实现MapFunction接口最简单的方式就是实现一个MapFunction接口,例如:text.flatMap(new MyFlatMapFunction()).keyBy(new KeySelector<WC, Object>() { ...原创 2019-08-29 16:55:00 · 217 阅读 · 0 评论 -
Apache Flink 零基础入门(七)Flink中keyBy三种方式指定key
keyBy 如何指定key不管是stream还是batch处理,都有一个keyBy(stream)和groupBy(batch)操作。那么该如何指定key?Some transformations (join, coGroup, keyBy, groupBy) require that a key be defined on a collection of elements. Other...原创 2019-08-29 16:25:00 · 15083 阅读 · 3 评论 -
Apache Flink 零基础入门(六)Flink核心概念
Flink程序是在分布式集合上实现转换的常规程序(例如filtering, mapping, updating state, joining, grouping, defining windows, aggregating)。集合最初是从sources上创建,这些源包括:本地文件, kafka topics, 内存集合等。结果通过sink返回,sink可以将数据写入文件中(分布式)或者终端...原创 2019-08-29 16:24:00 · 176 阅读 · 0 评论 -
Apache Flink 零基础入门(五)Flink开发实时处理应用程序
使用Flink + java实现需求环境JDK:1.8Maven:3.6.1(最低Maven 3.0.4)使用上一节中的springboot-flink-train项目开发步骤第一步:创建流处理上下文环境StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment...原创 2019-08-28 17:20:00 · 241 阅读 · 0 评论 -
Apache Flink 零基础入门(四)Flink开发批处理应用程序
需求词频统计,即给一个文件,统计文件中每个单词出现的次数,分隔符是\t。这个文件内容如下:hello world welcomehello welcome统计结果直接打印在控制台。生产环境下一般Sink到目的地。使用Flink + java实现需求环境JDK:1.8Maven:3.6.1(最低Maven 3.0.4)创建项目mvn arc...原创 2019-08-28 11:23:00 · 365 阅读 · 0 评论 -
Apache Flink 零基础入门(三)编写最简单的helloWorld
实验环境JDK 1.8IDE Intellij ideaFlink 1.8.1实验内容创建一个Flink简单Demo,可以从流数据中统计单词个数。实验步骤首先创建一个maven项目,其中pom.xml文件内容如下: <properties> <flink.version>1.8.1</flink.version&...原创 2019-08-27 16:27:00 · 566 阅读 · 0 评论 -
Apache Flink 零基础入门(二):使用docker快速搭建Flink
使用docker拉取镜像docker pull flink镜像拉取好之后,检查一下:iie4bu@swarm-manager:~/ddy/docker-flink$ docker image lsREPOSITORY TAG IMAGE ID CREAT...原创 2019-08-23 09:51:00 · 1141 阅读 · 0 评论 -
Apache Flink 零基础入门(一):基础概念解析
Apache Flink 的定义、架构及原理Apache Flink 是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态或无状态的计算,能够部署在各种集群环境,对各种规模大小的数据进行快速计算。Flink Application了解 Flink 应用开发需要先理解 Flink 的 Streams、State、Time 等基础处理语义以及 Flink 兼顾灵活性和方...原创 2019-08-21 17:16:00 · 295 阅读 · 0 评论