4 wangpei1949

尚未进行身份认证

我要认证

仰望星空,脚踏实地。

等级
TA的排名 1w+

Flink Table & SQL 自定义TableSource、TableSink

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

2020-04-19 18:22:24

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

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

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

Flink Table & SQL 双流Join

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

2020-04-05 22:44:10

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

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

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

Spark Structured Streaming状态操作: mapGroupsWithState、flatMapGroupsWithState

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

2020-03-22 15:34:14

Spark Structured Streaming去除重复数据Deduplication

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

2020-03-22 15:32:15

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

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

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

2020-03-08 19:42:27

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

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

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

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

Flink Table & SQL 时态表Temporal Table

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

2019-12-14 18:20:51

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

Flink Table & SQL AppendStreamTableSink、RetractStreamTableSink、UpsertStreamTableSink

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

2019-11-30 16:55:27

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

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。