flink cdc

CDC是 Change Data Capture(变更数据获取 )的简称。 核心思想是,监测并捕获数据库的变动(包括数据或数据表的插入 、 更新 以及 删除等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。

Flink社区开发了 flink-cdc-connectors 组件,这是一个可以直接从 MySQL、 PostgreSQL 等数据库直接 读取全量数据 和 增量变更数据 的 source 组件。

说白了就是连接数据库,然后实时监控变化

nginx

0 原理

概念

正向代理:代理的是客户端

反向代理:代理的是服务器端

作用

https://zhuanlan.zhihu.com/p/54793789

1、静态HTTP服务器

2、反向代理服务器

3、负载均衡

ranker-> nginx ->qr

4、虚拟主机

5、FastCGI

1 使用

配置

conf/vhosts

监听老的端口 生成新的端口

启动

./nginx

问题

1 nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

1
2
lsof -i :80 |grep nginx |grep -v grep|awk '{print $2}'
kill -9 XXX XXX

https://blog.csdn.net/fmwind/article/details/120786375

并行度设置

https://blog.csdn.net/hongzhen91/article/details/90812686

一个任务的并行实例(线程)数目就被称为该任务的并行度

并行度设置层次

1 Operator Level(算子层次)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
setParallelism

reduce(new ReduceFunction<Tuple2<String, Long>>() {
@Override
public Tuple2<String, Long> reduce(Tuple2<String, Long> value1, Tuple2<String, Long> value2) throws Exception {
// 将累加器更新为当前最大的pv统计值,然后向下游发送累加器的值
return value1.f1 > value2.f1 ? value1 : value2;
}
}).setParallelism(5)
.print();

(Mary,1)
(Bob,1)
(Mary,2)
(Bob,2)
(Mary,3)
(Bob,3)
(Mary,4)
(Bob,4)


keyBy(r -> true) // 为每一条数据分配同一个key,将聚合结果发送到一条流中去
.reduce(new ReduceFunction<Tuple2<String, Long>>() {
@Override
public Tuple2<String, Long> reduce(Tuple2<String, Long> value1, Tuple2<String, Long> value2) throws Exception {
// 将累加器更新为当前最大的pv统计值,然后向下游发送累加器的值
return value1.f1 > value2.f1 ? value1 : value2;
}
})
.print().setParallelism(5);


2> (Bob,2)
1> (Mary,2)
1> (Bob,4)
3> (Mary,3)
5> (Bob,1)
5> (Mary,4)
4> (Mary,1)
4> (Bob,3)

2Execution Environment Level(执行环境层次)

3Client Level(客户端层次)

4System Level(系统层次)

优先级1>2>3>4

物理分区

https://www.cnblogs.com/wdh01/p/16038278.html

首先和逻辑分区区别开,逻辑分区包括keyBy等算子

逻辑分区只不过将数据按照key分组,哪个key分到哪个task,系统自动控制,万一分配不均,会发生数据倾斜

物理分区就是按一定逻辑将数据分配到不同Task,可以缓解数据倾斜

source(1)-》不同物理分区方式(3)-》slot

分类

1 随机分区 random

2 轮询分区round-robin

3 重缩放分区 rescale

4 分局分区 global

5 自定义 custom

6 广播

不完全算物理分区方式

流批选择

之前版本

1
2
3
4
//流
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
//批
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();

现在版本

通过执行模式 execution mode选择

1 流处理 streaming 默认

2 批处理 batch

3 自动 automatic

(1) 通过命令行

1
flink run -Dexecution.runtime-mode=BATCH/../..

(2)代码

1
2
3
env.setRuntimeMode(RuntimeExecutionMode.STREAMING);
env.setRuntimeMode(RuntimeExecutionMode.BATCH);
env.setRuntimeMode(RuntimeExecutionMode.AUTOMATIC);

hql增删改查

1增

insert

load

2删

1 表

Drop 表结构都没有了

1
DROP TABLE IF EXISTS employee;

2 记录

没有DELETE

TRUNCATE

所有记录

truncate table employees;

INSERT OVERWRITE

1
2
INSERT OVERWRITE TABLE dpc_test SELECT * FROM dpc_test WHERE age is not null;

3改

1 update

针对记录

1
update student set id='444' where name='tom';

2 Alter

表结构

4查

select

建表

1
2
3
4
5
6
7
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
`runoob_id` INT UNSIGNED AUTO_INCREMENT,
`runoob_title` VARCHAR(100) NOT NULL,
`runoob_author` VARCHAR(40) NOT NULL,
`submission_date` DATE,
PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

字段数据类型

https://www.w3school.com.cn/sql/sql_datatypes.asp

array

https://www.educba.com/array-in-sql/

约束(Constraints)

  • NOT NULL - 指示某列不能存储 NULL 值。
  • UNIQUE - 保证某列的每行必须有唯一的值。
  • PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
  • FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
  • CHECK - 保证列中的值符合指定的条件。
  • DEFAULT - 规定没有给列赋值时的默认值。

自增字段

AUTO INCREMENT

1
2
3
4
5
6
7
8
9
CREATE TABLE Persons
(
ID int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (ID)
)

开始值是 1,每条新记录递增 1

数据结构汇总

https://blog.csdn.net/m0_37568814/article/details/81288756

https://zhuanlan.zhihu.com/p/138523723

1 分类

数据结构包括:逻辑结构,存储结构,数据运算

数据的逻辑结构主要分为线性结构和非线性结构。

  • 线性结构:数据结构的元素之间存在一对一线性关系,所有结点都最多只有一个直接前趋结点和一个直接后继结点。常见的有数组、队列、链表、栈。
  • 非线性结构:各个结点之间具有多个对应关系,一个结点可能有多个直接前趋结点和多个直接后继结点。常见的有多维数组、广义表、树结构和图结构等。

数据的存储结构,表示数据元素之间的逻辑关系,一种数据结构的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有:

  • 顺序存储:存储顺序是连续的,在内存中用一组地址连续的存储单元依次存储线性表的各个数据元素。
  • 链式存储:在内存中的存储元素不一定是连续的,用任意地址的存储单元存储元素,元素节点存放数据元素以及通过指针指向相邻元素的地址信息。
  • 索引存储:除建立存储结点信息外,还建立附加的索引表来标识节点的地址。索引表由若干索引项组成。
  • 散列存储:又称Hash存储,由节点的关键码值决定节点的存储地址。

2 常用的数据结构

  • 数组(Array)
  • 队列(Queue)
  • 链表(Linked List)
  • 栈(Stack)
  • 树(Tree)
  • 散列表(Hash)
  • 堆(Heap)
  • 图(Graph)

:D 一言句子获取中...