窗口类型
- Hopping Window 固定时间,重叠窗口
- Tumbling Window 固定时间,不重叠,无间隙的滚动窗口
- Session Window 动态大小,不重叠的数据驱动窗口
窗口参数
- SIZE 窗口大小
- ADVANCE BY 开启窗口间隔(Hopping 类型专用)
- RETENTION 窗口保留时间
- GRACE PERIOD 窗口宽限期,保证延迟的数据也可以被包含到窗口内
注意: SIZE + GRACE PERIOD < RETENTION
时间单位
- MILLISECOND, MILLISECONDS
- SECOND,SECONDS
- MINUTE,MINUTES
- HOUR,HOURS
- DAY,DAYS
窗口特性
- 使用聚合函数生产Table时,必须保证Table中的数据是有限的,而且需要估算对应的数据量。
- KSQL 时间基于UTC时间,所以不能执行东八区每年一个窗口,但是对于每小时或者每分钟不影响
- KSQL 窗口默认宽限期为24小时,默认保存时间可能为无限长(未找到相关文档)。
- KSQL 不支持子查询
- 使用窗口做集合操作时,尽量添加’RETENTION’和’GRACE PERIOD’配置。
- 窗口聚合后产生的null值可以通过创建新的Stream然后用WHERE过滤掉。
- 存储在changelog主题中的数据量取决于键的数量,键的大小,聚合的大小以及是否对聚合进行了窗口化(如果有的话),窗口保留时间是多少。
- 对于非窗口式聚合,总大小应大致为(密钥大小+聚合大小)乘以密钥数目。
- 吞吐量 通常,更高的吞吐量需要更多的资源。
- 查询类型 您实现的吞吐量将很大程度上取决于您运行的查询类型。
Filter < Joins < Aggregations - 查询数量 服务器上的可用资源在所有查询中共享。每个查询会增加一点CPU开销。您应该避免在一个ksqlDB集群上运行大量查询
- 数据结构 ksqlDB处理将序列化的Kafka记录映射到流或表的架构中的列。
- 分区数量 Kafka Streams创建一个RocksDB状态存储实例进行聚合,并为给定ksqlDB服务器处理的每个主题分区加入连接。每个RocksDB状态存储实例的高速缓存加实际存储的数据都有50 MB的内存开销。
- Key空间 对于聚合和Joins,Kafka Streams、 RocksDB尝试将状态存储的工作集保留在内存中,以避免I / O操作。如果键很多,则需要更多的内存。这也使对状态存储的读写更加昂贵。请注意,状态存储中的数据大小不受内存(RAM)限制,而仅受ksqlDB服务器上的可用磁盘空间限制。
1 | CREATE TABLE pageviews_per_region AS |