![](https://img-blog.csdnimg.cn/20190905232738960.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
flink
_东极
少年锦时
展开
-
(14) flink sql与tableAPI
文章目录1. Flink SQL开发1.1. 什么是flink关系型API1.2. Table API和SQL程序的结构1.3. 在内部目录中注册一个表1.3.1. 注册一个表1.3.2. 注册一个TableSource1.3.3. 注册一个TableSink1.4. Table和DataStream和DataSet的集成1.4.1. 将DataStream或DataSet转换为Table1.4....原创 2019-09-22 18:06:16 · 501 阅读 · 0 评论 -
flink作业提交流程
文章目录独立模式(Standalone)YARN 集群1. 会话(Session)模式单作业(Per-Job)模式应用(Application)模式(1) 一般情况下,由客户端(App)通过分发器提供的 REST 接口,将作业提交给JobManager。(2)由分发器启动 JobMaster,并将作业(包含 JobGraph)提交给 JobMaster。(3)JobMaster 将 JobGraph 解析为可执行的 ExecutionGraph,得到所需的资源数量,然后向资源管理器请求资源(slot原创 2022-05-08 22:55:24 · 3033 阅读 · 0 评论 -
flink的架构 job manager和TaskManager
文章目录job managerjob master资源管理器(ResourceManager)分发器(Dispatcher)TaskManagerjob managerjob maager 是flink 集群中任务管理和调度的核心,控制应用执行的主进程,每个应用都应该被唯一的Job manager 所控制执行,ha 环境下可能会有多个,但是只有一个为leader,其中 job manager 有三个组件job masterJobMaster 是 JobManager 中最核心的组件,负责处理单独的作原创 2022-05-08 21:50:36 · 1812 阅读 · 1 评论 -
flink的部署模式
文章目录会话模式(Session Mode)单作业模式(Per-Job Mode)应用模式(Application Mode)flink 主要分为三种部署模式:⚫ 会话模式(Session Mode)⚫ 单作业模式(Per-Job Mode)⚫ 应用模式(Application Mode)会话模式(Session Mode)首先启动一个集群,保持一个会话,在这个会话中通过客户端提交作业,此时集群所有的资源已经确定,所有提交的作业会竞争集群中的资源问题: 同一个task manager上的作业原创 2022-05-08 17:16:07 · 1425 阅读 · 0 评论 -
java.lang.IllegalArgumentException: The given host:port (‘yarn-cluster‘) doesn‘t contain a valid por
修改flink安装包中的bin/flink开头增加代码export HADOOP_CLASSPATH=`hadoop classpath`原创 2022-04-27 20:42:54 · 1810 阅读 · 0 评论 -
flink sql 时态和和静态表的理解
静态表flink sql 定义的维度表,一般程序启动的时候将维度即信息一次性缓存到内存中,下次流数据与之关联的时候,实际是与内存中数据进行关联查询样例SQLcreate table source_kafka (id bigint,name string,proctime as proctime()) WITH ( 'connector' = 'kafka', 'topic' = 'test', 'properties.bootstrap.servers' = 'xxx', 'p原创 2022-03-18 12:06:48 · 3478 阅读 · 2 评论 -
flinksql 的函数使用指南
文章目录时间函数CURRENT_TIMECURRENT_DATE时间函数CURRENT_TIME使用select CURRENT_TIME from a结果: 只有时分秒18:51:28CURRENT_DATE使用select CURRENT_DATE from a结果 只有年月日2022-02-11原创 2022-02-11 09:52:19 · 728 阅读 · 0 评论 -
flinksql报错大全
报错Type mismatch in column 1 of UNION解决方案:sql 在 union的时候 两个表字段出现类型不一致现象原创 2022-02-09 14:30:16 · 4145 阅读 · 2 评论 -
flink sql 自定义connector 原理解读
文章目录创建动态表工厂类比于flume的sink,source,channel的模型,定义好connector,用户编写自定义的source端和siink端,就可以将数据需求sql化实现架构图:创建动态表工厂对于source端实现 DynamicTableSourceFactory 接口, DynamicTableSourceFactory 需要实现的方法 @Override public DynamicTableSource createDynamicTableSource(Co原创 2021-11-17 15:59:26 · 576 阅读 · 0 评论 -
flink sql 自定义connector 原理解读
文章目录创建动态表工厂类比于flume的sink,source,channel的模型,定义好connector,用户编写自定义的source端和siink端,就可以将数据需求sql化实现架构图:创建动态表工厂对于source端实现 DynamicTableSourceFactory 接口, DynamicTableSourceFactory 需要实现的方法 @Override public DynamicTableSource createDynamicTableSource(Co原创 2021-11-17 13:42:36 · 1980 阅读 · 0 评论 -
flink sql 的 source / sink 原理
文章目录sourcesource对于flink sql 中的source 无奈就两种.流表 比如数据源是kafka 或者mq等动态数据源维表数据源是mysql/hbase/redis等静态数据源datastream 定义一个source的基本内容source , sink 的connector 连接配置信息(sql中connector)source , sink的序列化方式信息(sql 中format字段)source,sink的字段信息 (sql source ,sink field原创 2021-11-08 23:43:20 · 2560 阅读 · 0 评论 -
flink sql连接hbase
文章目录创建hbase表可以设置参数 public static final ConfigOption<String> TABLE_NAME = ConfigOptions.key("table-name").stringType().noDefaultValue().withDescription("The name of HBase table to connect."); public static final ConfigOption<String> ZOO原创 2021-11-02 10:59:25 · 1323 阅读 · 0 评论 -
Flink: No operators defined in streaming topology. Cannot execute
Flink: No operators defined in streaming topology. Cannot execute需要增加print(), 类似spark 中需要触发算子一样env.print()env.execute("Test Job")原创 2021-10-27 16:20:03 · 3897 阅读 · 0 评论 -
Flink读取嵌套Json
package kafka;import org.apache.flink.api.common.typeinfo.TypeInformation;import org.apache.flink.api.java.typeutils.ObjectArrayTypeInfo;import org.apache.flink.streaming.api.environment.StreamExe...原创 2020-01-05 23:20:52 · 5845 阅读 · 3 评论 -
(五)flink的DataSet:容错
固定延迟失败以及失败率:应用场景:网络存在延迟时,比如数据库连接断开现象package batch.retry;import org.apache.flink.api.common.functions.MapFunction;import org.apache.flink.api.common.restartstrategy.RestartStrategies;import org....原创 2020-01-04 17:46:30 · 316 阅读 · 0 评论 -
(四)flink的DataSet:传递参数
文章目录构造方法传参withParameters传参全局传参构造方法传参package batch;import org.apache.flink.api.common.functions.FilterFunction;import org.apache.flink.api.java.DataSet;import org.apache.flink.api.java.ExecutionE...原创 2020-01-04 17:29:43 · 355 阅读 · 0 评论 -
(三)flink的DataSet:分布式缓存
Flink提供了类似于Apache Hadoop的分布式缓存,可以让并行用户函数实例本地化的访问文件。此功能可用于共享包含静态外部数据(如字典或机器学习的回归模型)的文件工作方式如下:程序将本地或远程文件系统(如HDFS或S3)的文件或目录作为缓存文件注册到ExecutionEnvironment中的特定名称下。当程序执行时,Flink自动将文件或目录复制到所有worker的本地文件系统。...原创 2020-01-04 15:19:45 · 486 阅读 · 0 评论 -
(二)flink的DataSet:广播变量的使用
文章目录广播变量允许您将数据集提供给的operator所有并行实例,该数据集将作为集合在operator中进行访问注意:由于广播变量的内容保存在每个节点的内存中,因此它不应该太大,常见使用在一些字典映射的环境中package batch;import org.apache.flink.api.common.functions.MapFunction;import org.apache....原创 2020-01-04 14:12:27 · 695 阅读 · 0 评论 -
(一)flink的DataSet读取文件以及外连接
文章目录读取CSV文件递归读取目录下的文件Unioninner joinjoin与对象结合读取CSV文件package batch;import org.apache.flink.api.java.ExecutionEnvironment;import org.apache.flink.api.java.operators.DataSource;import org.apache.fl...原创 2020-01-04 00:33:48 · 772 阅读 · 0 评论 -
(五)flink的Table API 与 SQL-更新模式与kafka连接器案例
文章目录更新模式应用实例更新模式对于stream类型的Table数据,需要标记是由于INSERT,UPDATE,DELETE中哪种操作更新的数据,在Table API中通过Update Modes指定数据更新类型,通过指定不同的Update Modes确定哪种更新操作的数据与外部系统进行交互.connect(...).inAppendMode() //交互INSERT操作更新数据.in...原创 2020-01-02 13:33:57 · 2417 阅读 · 0 评论 -
(四)flink的Table API 与 SQL-Table Schema
文章目录table schema定义了Flink Table的数据表结构,包括字段名称,类型,同时Table Schema会和Table Format相匹配,在Table数据输入或输出过程中完成Schema的转换但是当Table Input/Output Format和Table Schema不一致的时候,都需要相应的Mapping关系来映射注意:用户必须按照Input/Output数据源中...原创 2020-01-02 13:12:10 · 2357 阅读 · 0 评论 -
(三)flink的Table API 与 SQL-外部连接器
文章目录flink可以通过table connector直接连接外部系统,将批量或者流式数据从外部系统中获取Flink系统中,或者Flink系统中将数据发送到外部系统中,主要目的是将内建的TableSource和TableSink封装,形成可配置化的组件,在TableAPI和SQL Client能够同时使用...原创 2019-12-29 23:32:35 · 1414 阅读 · 0 评论 -
(二)flink的Table API 与 SQL-DataStream或DataSet与Table相互转换
文章目录DataStream或DataSet 转换为TableDataStream注册成Table通过registerDataStream转换成table使用fromDataStream转换成tableDataSet转换成TableTable转换成DataStream或DataSetTable转换为DataStreamTable转换为DataSettable api是DataStream或Dat...原创 2019-12-26 00:23:39 · 2466 阅读 · 0 评论 -
(一)flink的Table API 与 SQL-StreamTableEnvironment基本操作
文章目录开发环境构建StreamTableEnvironment上下文环境内部calalog的注册(1) 内部Table的注册(2) TableSource注册(3) TableSink的注册外部CataLog开发环境构建pom.xml <properties> <project.build.sourceEncoding>UTF-8</pro...原创 2019-12-25 00:56:02 · 6533 阅读 · 0 评论 -
flink的toAppendStream与toRetractStream(待完善)
toAppendStream:只对增加的新数据有效,较为局限实现为extends RichSinkFunction<Row> toRetractStream:更新的数据为true,未更新为false implements SinkFunction<Tuple2<Boolean, Row>>...原创 2019-12-23 00:28:02 · 4054 阅读 · 0 评论 -
安装flink完成无法提交任务
增加环境变量export YARN_CONF_DIR=/etc/hadoop/confexport HADOOP_CLASSPATH=`hadoop classpath`export HADOOP_CONF_DIR=/etc/hadoop/conf原创 2019-12-21 23:14:59 · 1272 阅读 · 0 评论 -
(20) flink有状态的算子和应用程序
文章目录算子状态(operator state)键控状态(Keyed State)Flink内置的很多算子,数据源source,数据存储sink都是有状态的,流中的数据都是buffer records,会保存一定的元素或者元数据。例如: ProcessWindowFunction会缓存输入流的数据,ProcessFunction会保存设置的定时器信息等等。在Flink中,状态始终与特定算子相关...原创 2019-12-19 00:11:39 · 1217 阅读 · 0 评论 -
(19) flink状态编程了解
文章目录概念一致性检查点(checkpoint): 保证exactly-once概念流式计算分为无状态以及有状态两种情况,无状态计算是观察每个独立事件,并根据最后一个事件输出结果,例如流处理应用程序从传感器接收温度读数,并在温度超过90度时发出警告有状态的计算则会基于多个事件输出结果例如所有类型的窗口。例如,计算过去一小时的平均温度,就是有状态的计算所有用于复杂事件处理的状态机...原创 2019-12-18 00:22:18 · 620 阅读 · 0 评论 -
(18) flink的ProcessFunction API(底层API)
文章目录产生背景KeyedProcessFunctionTimerService 和 定时器(Timers)产生背景转换算子是无法访问事件的时间戳信息和水位线信息的。而这在一些应用场景下,极为重要。例如MapFunction这样的map转换算子就无法访问时间戳或者当前事件的事件时间。基于此,DataStream API提供了一系列的Low-Level转换算子。可以访问时间戳、watermar...原创 2019-12-17 23:51:15 · 460 阅读 · 0 评论 -
(17) flink时间语义
文章目录时间(Time)语义时间(Time)语义Event Time:事件创建的时间Ingestion Time:数据进入Flink的时间Processing Time:执行操作算子的本地系统时间,与机器相关一般设置时间戳为Event Time,默认是Processing Time在代码中设置 Event Time具体的时间,还需要从数据中提取时间戳(timestamp),分配时...原创 2019-12-10 00:14:38 · 1936 阅读 · 0 评论 -
(16) flink实现udf函数,细粒度的控制流
文章目录函数类富函数函数类flink暴露所有udf函数的接口(实现方式为接口或者抽象类),例如MapFunction,FilterFunction,ProcessFunction等等class FilterFilter extends FilterFunction[String] { override def filter(value : String) :Boolean = { ...原创 2019-12-09 00:33:20 · 1349 阅读 · 0 评论 -
(2)flink的wordCount
文章目录基础工程依赖打包插件代码基础工程依赖<dependencies> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-scala_2.11</artifactId> <v...原创 2019-09-02 23:30:19 · 273 阅读 · 0 评论 -
(3)flink的实时wordCount
文章目录代码linux代码import org.apache.flink.api.java.utils.ParameterToolimport org.apache.flink.streaming.api.scala.StreamExecutionEnvironmentobject StreamingWordCount { /* args中传递参数 : --host note01...原创 2019-09-02 23:59:09 · 347 阅读 · 0 评论 -
(4)flink的standalone的部署
文章目录安装standalone 模式提交任务安装下载安装包https://www.apache.org/dyn/closer.lua/flink/flink-1.7.0/flink-1.7.0-bin-scala_2.11.tgz上传linux上解压,并且分发到其他机器上Flink三种运行方式:Local、Standalone、On Yarnstandalone 模式修改 flin...原创 2019-09-04 00:51:51 · 642 阅读 · 0 评论 -
(5)flink基于yarn的部署
首先保证hadoop集群的正常运行,启动yarn-session./yarn-session.sh -n 2 -s 2 -jm 1024 -tm 1024 -nm test -d参数说明-n(–container):TaskManager的数量-s(–slots): 每个TaskManager的slot数量,默认一个slot一个core,默认每个taskmanager的slot的个数为...原创 2019-09-04 21:10:27 · 458 阅读 · 0 评论 -
(6)flink on yarn的任务提交流程以及原理
文章目录任务调度流程任务调度原理任务调度流程任务提交后,client向hdfs上传flink的jar包以及配置向Yarn的ResourceManager提交任务ResourceManager分配Container资源并通知对应的NodeManager启动ApplicationMasterApplicationMaster启动后加载flink的jar包和构建环境,启动JobManage...原创 2019-09-04 21:28:16 · 2301 阅读 · 0 评论 -
(7)flink的Worker与Slots
每一个worker(TaskManager)是一个JVM进程,它可能会在独立的线程上执行一个或多个subtask。为了控制一个worker能接收多少个task,worker通过task slot来进行控制(一个worker至少有一个task slot)。每个task slot表示TaskManager拥有资源的一个固定大小的子集。假如一个TaskManager有三个slot,那么它会将其管理的内...原创 2019-09-05 00:11:53 · 1079 阅读 · 1 评论 -
(8)flink的并行数据流,task与operator chains
文章目录并行数据流One-to-oneRedistributingtask与operator chains并行数据流Flink程序的执行具有并行、分布式的特性。在执行过程中,一个 stream 包含一个或多个 stream partition ,而每一个 operator 包含一个或多个 operator subtask,这些operator subtasks在不同的线程、不同的物理机或不同的...原创 2019-09-05 00:19:19 · 1137 阅读 · 0 评论 -
(9)flink的kafka的结合
文章目录依赖kafka的sourceFlink+kafka是如何实现exactly-once语义的依赖<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-scala_2.11</artifactId> <version>...原创 2019-09-09 22:41:57 · 435 阅读 · 0 评论 -
(10) flink中的算子 流的分割与join
文章目录KeyByReduceflink保存累计值原理Split 和SelectsplitSelect需求:将kafka中数据根据某属性分割开,分成两个流Connect和 CoMapConnectCoMap,CoFlatMapUnionConnect与 Union 区别常见的map.flatMap,filter类比sparkKeyByDataStream → KeyedStream:输入必须...原创 2019-09-10 00:21:14 · 1822 阅读 · 0 评论