在/usr/share/applications和/usr/share/app-install/desktop寻找需要的图标,没有就自己做一个
eclipse的图标
1 | [Desktop Entry] |
在/usr/share/applications和/usr/share/app-install/desktop寻找需要的图标,没有就自己做一个
eclipse的图标
1 | [Desktop Entry] |
输入:Salary表
1 | +-------------+------+ |
使用limit+offset语法来限制结果数量,其中 limit N,1 等于 limit 1 offset N
1 | select (select DISTINCT Salary from Employee order by Salary DESC limit 1 offset 1) as SecondHighestSalary |
输出:
1 | +---------------------+ |
输入:Logs表
1 | +----+-----+ |
查询表3次,然后通过where条件来筛选
1 | SELECT DISTINCT(t1.Num) as ConsecutiveNums |
输出:
1 | +-----------------+ |
输入:Employee表和Department表
1 | Employee 表: |
先用group by+max算出每个departmentId下最多的salary,然后用where+in来进行过滤
1 | select t2.Name as Department,t1.Name as Employee,Salary from ( |
输入:Scores表
1 | +----+-------+ |
1 | # t2表中有多少个大于t1当前score的 |
去重后的scores表中,比scores表的每一行大的有多少个
输出:
1 | +-------+------+ |
Flink窗口(window)可以用于keyed streams和non-keyed streams
参考官方文档:https://nightlies.apache.org/flink/flink-docs-master/zh/docs/dev/datastream/operators/windows/
flink支持3种时间语义,分别是Event time,Processing time和Ingestion time。
参考:https://nightlies.apache.org/flink/flink-docs-release-1.17/docs/learn-flink/streaming_analytics/
Event time的时间戳是每个单独事件在其产生设备上发生的时间。Event time通常在record进入Flink之前就嵌入到record中,这样就可以从每条record中提取事件时间戳。在Event time中,时间的进程取决于数据,而不是任何时钟。Event time程序必须指定如何生成Event time watermarks,这是一种以事件时间表示进度的机制。
在理想情况下,Event time处理将产生完全一致和确定的结果,而不管事件何时到达或它们的顺序如何。然而,除非事件是按顺序到达的(按时间戳),否则事件时间处理在等待乱序事件时会产生一些延迟。因为只能等待一段有限的时间,这就限制了Event time应用程序的确定性。
Processing time是指执行相应operator的机器的系统时间。
当流处理程序在Porcessing time上运行时,所有基于时间的操作(如时间窗口)将使用运行相应操作的机器的系统时钟。每小时的处理时间窗口将包括在系统时钟显示整个小时的时间之间到达特定操作员的所有记录。例如,如果应用程序在上午9点15分开始运行,第一个小时处理时间窗口将包括上午9点15分到10点之间处理的事件,下一个窗口将包括上午10点到11点之间处理的事件,以此类推。
默认情况下checkpoint是禁用的,需要手动进行开启,如下
1 | StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); |
其他配置参考官方文档
1 | https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/dev/datastream/fault-tolerance/checkpointing/ |
1 | bin/flink run -s checkpoint_path |
参考:https://nightlies.apache.org/flink/flink-docs-master/zh/docs/ops/state/checkpoints/
做checkpoint很慢问题排查,参考:2022年最新版 | Flink经典线上问题小盘点
增量checkpoint,参考:Flink 管理大型状态之增量 Checkpoint
大状态与 Checkpoint 调优,参考:大状态与 Checkpoint 调优
为了方便使用Flink对流式数据进行统一的读写,需要开发统一的source服务
需要可配置的参数,参考flume的kafka source配置参数
1 | https://flume.apache.org/FlumeUserGuide.html#kafka-source |
定义KafkaSourceConstants,参考:
1 | https://github.com/apache/flume/blob/trunk/flume-ng-sources/flume-kafka-source/src/main/java/org/apache/flume/source/kafka/KafkaSourceConstants.java |
比如对于kafka source相关的配置,统一的前缀为 kafka.source.,比如
1 | # kafka source |
参考文章:Flink学习笔记——配置,对kafka source前缀的配置进行读取
DelayQueue
是一个基于优先队列(PriorityQueue
)实现的阻塞队列(BlockingQueue
),队列中的消息的优先级是根据消息的TTL来决定的。
使用延迟队列实现定时任务调度器
参考:https://soulmachine.gitbooks.io/system-design/content/cn/task-scheduler.html