自定义博客皮肤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博客

 仰望星空,脚踏实地

  • 博客(132)
  • 资源 (39)
  • 收藏
  • 关注

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

Flink Table & SQL中提供了非常丰富的接口来让我们自定义TableSource、TableSink。自定义TableSource或TableSink,需要将以下两点结合起来:了解不同TableSource接口、TableSink接口、TableFactory接口提供的功能以及适用的场景。看JDBCTableSource、JDBCUpsertTableSink源码...

2020-04-19 18:22:24 2813 1

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

总结Flink Table & SQL 流式聚合中的几个优化。MiniBatchLocalGlobalSplit DistinctAgg With FilterMiniBatchMiniBatch优化的核心思想是缓冲输入记录微批处理以减少对状态的访问,进而提升吞吐并减少数据的输出。以如下场景为例,看下开启MiniBatch聚合前后的差异。SELECT k...

2020-04-19 18:08:32 704

原创 Flink Table & SQL ROW_NUMBER Deduplication

在Flink SQL中用ROW_NUMBER进行去重操作。语法SELECT [column_list]FROM ( SELECT [column_list], ROW_NUMBER() OVER ([PARTITION BY col1[, col2...]] ORDER BY time_attr_col [asc|desc]) AS rownum FROM...

2020-04-12 17:18:47 2738 1

原创 Flink Table & SQL 实时TopN

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

2020-04-12 16:55:23 971

原创 Flink Table & SQL 双流Join

本文总结Flink Table & SQL 中的双流Join。Regular JoinInterval JoinWindow JoinRegular JoinRegular Join: 常规Join。在使用时注意以下几点:默认情况下,需要将两个流的输入全部保存在State中。为限制状态无限增长,可通过Query Configuration设置空闲状态保留时...

2020-04-05 22:44:10 2139

原创 Flink Table & SQL 维表Join

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

2020-04-05 22:39:07 4137

原创 Spark Structured Streaming 监控Kafka Lag

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

2020-03-29 21:43:59 1027 3

原创 Spark Structured Streaming Join

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

2020-03-29 21:35:56 923

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

总结Structured Streaming中的状态操作: mapGroupsWithState、flatMapGroupsWithState。mapGroupsWithState每次Trigger后,将给定的Function应用于有数据的每个分组,同时维护每组的状态。先看下mapGroupsWithState Operator,如下:// S: 状态类型 U: 返回类型// func:...

2020-03-22 15:34:14 2374

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

Structured Streaming可以使用Deduplication对有无Watermark的流式数据进行去重操作。无Watermark: 对重复记录到达的时间没有限制。查询会保留所有的过去记录作为状态用于去重。有Watermark: 对重复记录到达的时间有限制。查询会根据水印删除旧的状态数据。本文总结Deduplication的使用及注意事项。测试数据// 测试数据,...

2020-03-22 15:32:15 1561

原创 Spark Structured Streaming Output Mode和Trigger

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

2020-03-08 19:44:58 1020

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

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

2020-03-08 19:42:27 876 2

原创 Spark Structured Streaming Source、Sink

本文总结Spark Structured Streaming Source、Sink。SourceFile Source从目录中读取文件作为数据流。支持csv、json、text、parquet、orc格式。以csv文件为例如下:// 启动自动推断Schemaspark.conf.set("spark.sql.streaming.schemaInference",true)// 读取...

2020-02-23 20:18:46 657

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

本文总结Spark Structured Streaming读写Kafka与Exactly-once语义。问题一: 读Kafka的方式// 读取一个Topicval inputTable=spark .readStream .format("kafka") .option("kafka.bootstrap.servers", "kafka01:9092,k...

2020-02-23 20:10:10 1308

原创 Spark Structured Streaming 编程模型

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

2020-01-12 18:52:06 298

原创 Flink Table & SQL LookableTableSource

在DataStream中,要实现流维Join,可以用Function,如MapFunction、FlatMapFunction、ProcessFunction等等; 或通过Async I/O实现。从Flink 1.9.0开始,提供了LookableTableSource,只需将Lookup数据源(如Mysql、HBase表)注册成LookableTableSource,即可用SQL的方式,实现流...

2019-12-15 22:37:21 3882 1

原创 Flink Table & SQL 时态表Temporal Table

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

2019-12-14 18:20:51 1842 1

原创 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 9020 2

原创 Flink Table & SQL AppendStreamTableSink、RetractStreamTableSink、UpsertStreamTableSink

Flink Table & SQL StreamTableSink有三类接口: AppendStreamTableSink、UpsertStreamTableSink、RetractStreamTableSink。AppendStreamTableSink: 可将动态表转换为Append流。适用于动态表只有Insert的场景。RetractStreamTableSink: 可将...

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

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

Catalog维护了Flink Table和SQL中的元数据,如Database、Table、View、UDF等。Catalog类型GenericInMemoryCatalog: 内置Catalog。名为default_catalog,默认数据库名为default_database。默认,如用TableEnvironment#registerTable注册的表,均会注册到这个Catalog...

2019-11-23 17:46:47 3082

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

Interval Join: 间隔连接。如下示例:一条流(Left Keyed Stream) 按Key Join另一条流(Right Keyed Stream)过去2分钟内(间隔)的数据。Interval Join语法leftKeyedStream .intervalJoin(rightKeyedStream) // 时间间隔,设定下界和上界 .between(Time.min...

2019-11-17 14:22:51 3741 2

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

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

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

原创 Flink DataStream Window 迟到数据处理

基于EventTime处理数据,先总结下先前得到的结论:EventTime下会有乱序或迟到的问题,需要借助Watermark来解决。Flink中的乱序或迟到: 实际上是一回事, MaxOutOfOrderness或AllowedLateness都是用来解决乱序问题的。具体区别:A. MaxOutOfOrderness: 第一次窗口计算触发前,最多允许乱序或迟到多久。B. Allow...

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

原创 Flink DataStream Window 剔除器 Evictor

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

2019-11-10 12:14:52 1738 3

原创 Flink DataStream Window 触发器 Trigger

Flink DataStream触发器Trigger决定了何时触发WindowFunction计算。本文总结Flink内置触发器并梳理Trigger API。八大内置触发器EventTimeTriggerEventTime Window的默认触发器。基于事件时间,当Watermark>=Window End Time时,触发窗口计算。ContinuousEventTimeTr...

2019-11-09 21:31:13 1765 1

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

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

2019-11-09 14:36:00 5350 1

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

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

2019-11-03 16:37:37 946

原创 Flink DataStream 提取Timestamp与生成Watermark

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

2019-11-03 16:31:13 934

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

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

2019-11-03 16:23:40 774 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.bigdata.flink.dataStreamMapOperator;import com.big...

2019-09-28 17:26:12 10655 4

原创 Flink DataStream RestAPI使用

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

2019-09-15 14:32:55 2414 1

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

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

2019-09-08 23:19:47 6233

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

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

2019-09-07 21:52:04 2647 3

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

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

2019-08-17 22:38:32 6953 4

原创 Flink DataStream分流、合流

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

2019-08-17 22:28:14 6766

原创 Flink DataStream写入Elasticsearch与容错

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

2019-08-11 14:58:10 4288 4

原创 Flink DataStream读写Kafka

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

2019-08-04 23:40:34 3284

原创 Flink DataStream Checkpoint和Savepoint

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

2019-07-28 15:34:02 1235

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

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

2019-07-20 21:36:46 5638 1

原创 Spark Streaming平滑停止

对于长期运行在Yarn上的Spark Streaming作业,尤其是要保证不丢不重语义的作业,不能简单使用yarn application -kill <Application ID>命令来停止,应当使用平滑停止策略。思路: 在Driver端,启动一个检测线程,周期性检测HDFS上的标记文件是否存在,存在则平滑停止,不存在则继续运行。伪代码如下: val ssc = new Str...

2019-06-02 15:32:26 631

线性代数及其应用(中文版).pdf

线性代数及其应用(中文版).pdf

2016-11-27

Hadoop实战中文版pdf

Hadoop实战中文版pdf

2016-11-27

jieba分词支持关键词带空格和特殊字符

jieba分词支持关键词带空格和特殊字符

2017-02-21

Hive编程指南PDF

Hive编程指南PDF

2017-04-01

Python基础教程(带目录)

Python基础教程(第2版)_带目录.pdf )

2016-11-27

Python自然语言处理中文pdf

Python自然语言处理中文pdf

2016-11-27

从零开始学StormPDF

从零开始学StormPDF

2017-03-29

Practical-Real-time-Data-Processing-and-Analytics.pdf

一本比较好的关于实时流处理的英文书: 1、介绍了流处理的一些核心概念 2、Storm 3、Spark Streaming 4、Flink

2019-06-07

HBase权威指南(中文版)pdf带目录

HBase权威指南(中文版)pdf带目录

2017-03-29

Apache POI EXCEL(XLSX)转成JSON maven依赖

Apache POI EXCEL(XLSX)转成JSON maven依赖

2017-03-10

阿里巴巴 Java 开发手册.pdf

阿里巴巴 Java 开发手册.pdf

2017-03-02

中文文本分类语料(复旦)-训练集

共50.38MB。本语料库由复旦大学李荣陆提供。test_corpus.rar为测试语料,共9833篇文档;train_corpus.rar为训练语料,共9804篇文档,两个预料各分为20个相同类别。训练语料和测试语料基本按照1:1的比例来划分。使用时尽量注明来源(复旦大学计算机信息与技术系国际数据库中心自然语言处理小组)。

2017-03-02

python 核心技术与应用--孙立爽pdf

python 核心技术与应用--孙立爽pdf

2017-03-02

Redis入门指南pdf带目录

Redis入门指南pdf带目录

2017-03-31

线性代数教材(同济大学第四版).pdf

线性代数教材(同济大学第四版).pdf

2016-11-27

推荐系统实践PDF带目录

推荐系统实践PDF带目录

2017-04-01

数据科学实战_完整版_带目录pdf

数据科学实战_完整版_带目录pdf

2017-03-02

R语言实战pdf

R语言实战pdf

2016-11-27

微博情感分析200万条

微博情感200万条

2017-03-17

Java数据结构和算法PDF带目录

2017-04-01

Spark机器学习PDF带目录

Spark机器学习PDF带目录

2017-04-01

HADOOP实战中文清晰版pdf带目录

HADOOP实战中文清晰版pdf带目录

2017-03-29

带目录-Spark大数据处理:技术、应用与性能优化(全)pdf

带目录-Spark大数据处理:技术、应用与性能优化(全)pdf

2017-03-31

Java面试宝典2015版PDF带目录

Java面试宝典2015版PDF带目录

2017-04-01

机器学习实战pdf

机器学习实战pdf

2016-11-27

Python数据挖掘入门与实践.pdf

Python数据挖掘入门与实践.pdf

2016-11-27

数学之美-吴军pdf

数学之美-吴军pdf

2017-03-02

spark快速大数据分析pdf

spark快速大数据分析pdf

2017-03-29

机器学习PDF带目录

机器学习PDF带目录

2017-04-01

Java数据结构和算法PDF

Java数据结构和算法PDF带目录

2017-04-01

Docker从入门到实践

Docker从入门到实践

2017-02-28

DbVisualizer9.5.5 64位破解补丁.rar

DbVisualizer是一个完全基于JDBC的跨平台数据库管理工具。

2017-03-01

统计自然语言处理基础(中文版 带书签)

统计自然语言处理基础(中文版 带书签)

2017-03-02

spark实战高手之从零开始带目录高清完整.pdf版下载

spark实战高手之从零开始pdf带目录

2017-03-29

常用数据挖掘算法总结及Python实现

常用数据挖掘算法总结及Python实现

2017-03-02

Hadoop技术内幕:深入解析MapReduce架构设计i与实现原理PDF

Hadoop技术内幕:深入解析MapReduce架构设计i与实现原理PDF

2017-04-01

Java设计模式中文版PDF带目录

Java设计模式中文版PDF带目录

2017-04-01

深入Java虚拟机pdf

深入Java虚拟机pdf

2017-03-31

ice中文教程PDF带目录

ice中文教程PDF带目录

2017-03-29

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

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