自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王佩的CSDN博客

 仰望星空,脚踏实地

原创 Flink Table & SQL 自定义TableSource、TableSink

Flink Table & SQL中提供了非常丰富的接口来让我们自定义TableSource、TableSink。 自定义TableSource或TableSink,需要将以下两点结合起来: 了解不同TableSource接口、TableSink接口、TableFactory接口提供的...

2020-04-19 18:22:24 578 0

原创 Flink Table & SQL: Minibatch、LocalGlobal、Split Distinct、Agg With Filter

总结Flink Table & SQL 流式聚合中的几个优化。 MiniBatch LocalGlobal Split Distinct Agg With Filter MiniBatch MiniBatch优化的核心思想是缓冲输入记录微批处理以减少对状态的访问,进而提...

2020-04-19 18:08:32 174 0

原创 Flink Table & SQL ROW_NUMBER Deduplication

在Flink SQL中用ROW_NUMBER进行去重操作。 语法 SELECT [column_list] FROM ( SELECT [column_list], ROW_NUMBER() OVER ([PARTITION BY col1[, col2...]] O...

2020-04-12 17:18:47 435 0

原创 Flink Table & SQL 实时TopN

TopN语句用于获取流表中的前N条记录。 本文总结Flink Table & SQL 中实时TopN的用法。 语法 SELECT [column_list] FROM ( SELECT [column_list], ROW_NUMBER() OVER ([PARTITION...

2020-04-12 16:55:23 191 0

原创 Flink Table & SQL 双流Join

本文总结Flink Table & SQL 中的双流Join。 Regular Join Interval Join Window Join Regular Join Regular Join: 常规Join。 在使用时注意以下几点: 默认情况下,需要将两个流的输入全部...

2020-04-05 22:44:10 396 0

原创 Flink Table & SQL 维表Join

总结Flink Table & SQL 中的维表Join,包括DataStream中的维表Join。 定时加载维度数据 Distributed Cache(分布式缓存) Async IO(异步IO) Broadcast State(广播状态) UDTF + LATERA...

2020-04-05 22:39:07 640 0

原创 Spark Structured Streaming 监控Kafka Lag

Structured Streaming消费Kafka时并不会将Offset提交到Kafka集群。但可以通过以下3种方式间接实现对Kafka Topic Lag的监控。 方式一: Checkpoint 先看下Checkpoint目录的结构: checkpoint/ ├── commits │ ...

2020-03-29 21:43:59 285 0

原创 Spark Structured Streaming Join

Structured Streaming中的Join操作分两类: 流-静态数据(Stream-Static)Join和流-流(Stream-Stream) Join。 本文总结这两类Join操作。 Stream-Static Join 测试数据 // 静态mysql select * from t...

2020-03-29 21:35:56 280 0

原创 Spark Structured Streaming状态操作: mapGroupsWithState、flatMapGroupsWithState

总结Structured Streaming中的状态操作: mapGroupsWithState、flatMapGroupsWithState。 mapGroupsWithState 每次Trigger后,将给定的Function应用于有数据的每个分组,同时维护每组的状态。 先看下mapGroup...

2020-03-22 15:34:14 658 0

原创 Spark Structured Streaming去除重复数据Deduplication

Structured Streaming可以使用Deduplication对有无Watermark的流式数据进行去重操作。 无Watermark: 对重复记录到达的时间没有限制。查询会保留所有的过去记录作为状态用于去重。 有Watermark: 对重复记录到达的时间有限制。查询会根据水印删...

2020-03-22 15:32:15 484 0

原创 Spark Structured Streaming Output Mode和Trigger

总结Structured Streaming中的输出模式Output Mode和触发器Trigger。 输出模式Output Mode Structured Streaming 中有几种类型的输出模式: Append mode: Append模式。默认。只将自上次触发以来添加到结果表中的行输出...

2020-03-08 19:44:58 244 0

原创 Spark Structured Streaming EventTime下Watermark生成与Window触发

本文旨在弄清楚Spark Structured Streaming EventTime下Watermark生成与Window触发相关问题。 窗口起止时间。 水印的生成。 对迟到数据的处理。 窗口销毁的时机。 Watermark与Update/Complete输出模式之间的关系。...

2020-03-08 19:42:27 246 0

原创 Spark Structured Streaming Source、Sink

本文总结Spark Structured Streaming Source、Sink。 Source File Source 从目录中读取文件作为数据流。支持csv、json、text、parquet、orc格式。以csv文件为例如下: // 启动自动推断Schema spark.conf.set...

2020-02-23 20:18:46 185 0

原创 Spark Structured Streaming 读写Kafka与Exactly-once语义

本文总结Spark Structured Streaming读写Kafka与Exactly-once语义。 问题一: 读Kafka的方式 // 读取一个Topic val inputTable=spark .readStream .format("kafka&qu...

2020-02-23 20:10:10 346 0

原创 Spark Structured Streaming 编程模型

从Spark 2.0.0开始,提供了一个用于实时流处理的新组件-Structured Streaming(结构化流)。 本文总结Structured Streaming的编程模型,顺带会总结Structured Streaming与Spark Streaming的区别。 Structured St...

2020-01-12 18:52:06 153 0

原创 Flink Table & SQL LookableTableSource

在DataStream中,要实现流维Join,可以用Function,如MapFunction、FlatMapFunction、ProcessFunction等等; 或通过Async I/O实现。 从Flink 1.9.0开始,提供了LookableTableSource,只需将Lookup数据源...

2019-12-15 22:37:21 1439 0

原创 Flink Table & SQL 时态表Temporal Table

举个栗子,假设你在Mysql中有两张表: browse_event、product_history_info。 browse_event: 事件表,某个用户在某个时刻浏览了某个商品,以及商品的价值。如下: SELECT * FROM browse_event; +--------+------...

2019-12-14 18:20:51 537 0

原创 Flink Table & SQL 用户自定义函数: UDF、UDAF、UDTF

本文总结Flink Table & SQL中的用户自定义函数: UDF、UDAF、UDTF。 UDF: 自定义标量函数(User Defined Scalar Function)。一行输入一行输出。 UDAF: 自定义聚合函数。多行输入一行输出。 UDTF: 自定义表函数。一...

2019-12-08 14:02:41 2653 1

原创 Flink Table & SQL AppendStreamTableSink、RetractStreamTableSink、UpsertStreamTableSink

Flink Table & SQL StreamTableSink有三类接口: AppendStreamTableSink、UpsertStreamTableSink、RetractStreamTableSink。 AppendStreamTableSink: 可将动态表转换为Appe...

2019-11-30 16:55:27 1986 3

原创 Flink Table & SQL Catalog 及DataStream、Table相互转换

Catalog维护了Flink Table和SQL中的元数据,如Database、Table、View、UDF等。 Catalog类型 GenericInMemoryCatalog: 内置Catalog。名为default_catalog,默认数据库名为default_database。默认,...

2019-11-23 17:46:47 1262 0

原创 Flink DataStream 基于Interval Join实时Join过去一段时间内的数据

Interval Join: 间隔连接。如下示例:一条流(Left Keyed Stream) 按Key Join另一条流(Right Keyed Stream)过去2分钟内(间隔)的数据。 Interval Join语法 leftKeyedStream .intervalJoin(righ...

2019-11-17 14:22:51 1269 1

原创 Flink DataStream Window Join: Inner Join、Left Join、Right Join

Flink DataStream中支持双流Join的算子目前已知有4种,如下: Connect: 在之前的文章中已有总结。一般和广播流BroadcastStream(如配置流)结合使用。 Join: 连接。语法: // Left DataStream stream // Right...

2019-11-16 22:17:47 391 1

原创 Flink DataStream Window 迟到数据处理

基于EventTime处理数据,先总结下先前得到的结论: EventTime下会有乱序或迟到的问题,需要借助Watermark来解决。 Flink中的乱序或迟到: 实际上是一回事, MaxOutOfOrderness或AllowedLateness都是用来解决乱序问题的。具体区别: A. ...

2019-11-10 17:44:41 319 2

原创 Flink DataStream Window 剔除器 Evictor

Evictor可在Window Function执行前或后,从原Window中剔除元素。 本文总结Flink DataStream Window内置Evictor: 数量剔除器 CountEvictor、阈值剔除器 DeltaEvictor、时间剔除器 TimeEvictor的剔除原理及使用。 C...

2019-11-10 12:14:52 674 1

原创 Flink DataStream Window 触发器 Trigger

Flink DataStream触发器Trigger决定了何时触发WindowFunction计算。本文总结Flink内置触发器并梳理Trigger API。 八大内置触发器 EventTimeTrigger EventTime Window的默认触发器。基于事件时间,当Watermark&g...

2019-11-09 21:31:13 549 0

原创 Flink DataStream Window 窗口函数 ReduceFunction、AggregateFunction、ProcessWindowFunction

Window Function在窗口触发后,负责对窗口内的元素进行计算。Window Function分为两类: 增量聚合和全量聚合。 增量聚合: 窗口不维护原始数据,只维护中间结果,每次基于中间结果和增量数据进行聚合。如: ReduceFunction、AggregateFunction。 全...

2019-11-09 14:36:00 2150 0

原创 Flink DataStream Window Time Window、Count Window、Session Window

在Flink DataStream中,可以通过Window,将无限的流(Streaming)分割成有限的批(Batch),进而进行各种统计。 本文总结Flink DataStream中Window的分类,以及常用Window Time Tumbling Window(基于时间的翻滚窗口)、Time...

2019-11-03 16:37:37 437 0

原创 Flink DataStream 提取Timestamp与生成Watermark

为了基于事件时间来处理每个元素,Flink需要知道每个元素(即事件)的事件时间(Timestamp)。为了衡量事件时间的处理进度,需要指定水印(Watermark)。 本文总结Flink DataStream中提取Timestamp与生成Watermark的两种方式。 在Source Functi...

2019-11-03 16:31:13 329 0

原创 Flink DataStream EventTime下Watermark生成与Window触发

本文总结Flink DataStream EventTime下Watermark的生成与Window计算的触发时机,旨在弄清楚以下问题: 窗口起止时间 对MaxOutOfOrderness或AllowedLateness的理解 窗口计算第一次触发的时机 窗口计算再次触发的时机 ...

2019-11-03 16:23:40 320 1

原创 Flink DataStream 算子 Map、FlatMap、Filter、KeyBy、Reduce、Fold、Aggregate

总结Flink DataStream 算子: Map、FlatMap、Filter、KeyBy、Reduce、Fold、Aggregate、Iterate的使用。 Map [DataStream->DataStream] Map: 一对一转换,即一条转换成另一条。 package com.b...

2019-09-28 17:26:12 4097 0

原创 Flink DataStream RestAPI使用

文章目录RestAPI端口设置RestAPI使用1. 启动Yarn Session集群2. 关闭集群3. 查看集群概览4. 查看Dastboard页面5. 查看JobManager上的相关配置6. 查看JobManager Metrics7. 查看所有TaskManager8. 查看某个TaskM...

2019-09-15 14:32:55 1084 0

原创 Flink DataStream 八大分区策略与自定义分区器

分区策略决定了一条数据如何发送给下游。Flink中默认提供了八大分区策略(也叫分区器)。 本文基于Flink 1.9.0总结Flink DataStream中的八大分区策略以及手动实现一个自定义分区器。 八大分区策略继承关系图 ChannelSelector: 接口,决定将记录写入哪个Chan...

2019-09-08 23:19:47 2530 0

原创 Flink DataStream 可查询状态(Queryable State)

Flink从1.2.0开始支持可查询状态(Queryable State)服务。可查询状态,允许用户从外部系统(如业务系统)查询Flink作业内部的状态。 Queryable State服务架构 [外链图片转存失败(img-m4jmzrNi-1567864248721)(https://githu...

2019-09-07 21:52:04 961 0

原创 Flink DataStream基于Broadcast State动态更新配置以实现实时过滤数据并增加字段

Flink从1.5.0开始支持广播状态(Broadcast State)。广播状态可以用来解决如下问题: 一条流需要根据规则或配置处理数据,而规则或配置又是随时变化的。此时,就可将规则或配置作为广播流广播出去,并以Broadcast State的形式存储在下游Task中。下游Task根据Broad...

2019-08-17 22:38:32 3168 2

原创 Flink DataStream分流、合流

本文总结Flink中非常有用的功能,分流和合流。 分流(Split/Side) 分流可以将一个流拆分成多个流。 基于Split...Select... package com.bigdata.flink; import lombok.extern.slf4j.Slf4j; import org....

2019-08-17 22:28:14 2679 0

原创 Flink DataStream写入Elasticsearch与容错

本文基于Flink 1.8 和ES 6.2.4 总结Flink写入Elasticsearch的问题点。 在使用ElasticsearchSink时,需要注意以下几点: ElasticsearchSink内部使用RestHighLevelClient(ES >=6.x)或Transport...

2019-08-11 14:58:10 1497 2

原创 Flink DataStream读写Kafka

Flink提供了Kafka连接器,用于从或向Kafka读写数据。 本文总结Flink与Kafka集成中的问题,并对一些疑点进行总结和梳理。 问题一: 读Kafka的方式 ## 读取一个Topic FlinkKafkaConsumer010#FlinkKafkaConsumer010(String ...

2019-08-04 23:40:34 1678 0

原创 Flink DataStream Checkpoint和Savepoint

针对不同场景,Flink提供了Checkpoint和Savepoint两种容错机制。 本文总结Checkpoint和Savepoint的使用。 Checkpoint Checkpoint存储状态数据,由Flink自己定期触发和清除,轻量快速,主要应用于作业生命周期内故障时恢复。 Checkpoin...

2019-07-28 15:34:02 406 0

原创 Flink DataStream流表与维表Join(Async I/O)

在Flink 流处理过程中,经常需要和外部系统进行交互,如维度补全,用维度表补全事实表中的字段。默认情况下,在MapFunction中,单个并行只能用同步方式去交互: 将请求发送到外部存储,IO阻塞,等待请求返回,然后继续发送下一个请求。这种同步交互的方式往往在网络等待上就耗费了大量时间。为了提高...

2019-07-20 21:36:46 2926 0

原创 Spark Streaming平滑停止

对于长期运行在Yarn上的Spark Streaming作业,尤其是要保证不丢不重语义的作业,不能简单使用yarn application -kill <Application ID>命令来停止,应当使用平滑停止策略。 思路: 在Driver端,启动一个检测线程,周期性检测HDFS上的...

2019-06-02 15:32:26 348 0

提示
确定要删除当前文章?
取消 删除