使用的依赖为:
1
2
3
4
5
|
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-clickhouse</artifactId>
<version>1.16.0-SNAPSHOT</version># 自己是基于flink1.17编译的
</dependency>
|
这个对应的 repository 为:
1
|
https://github.com/huangxiaofeng10047/flink-connector-clickhouse
|
对应的写入 sql 为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#clickhouse创建的sql为
CREATE TABLE `default`.sls_test_single_local
(
`Intv` UInt32,
`stamp` Nullable(UInt32),
`method1` Nullable(UInt32),
`data` Nullable(text),
`netId` LowCardinality(String)
)
ENGINE = MergeTree
ORDER BY (netId);
|
发现一个问题,消息不回全部消费完,还剩下一条在
clickhouse 创建表注意
clickhouse 创建数据库和本地表
clickhouse 的存储引擎很多,主要用到的有以下三种
MergeTree,是 CK 里最 Advanced 的引擎,性能超高,本地表
ReplicatedMergeTree,基于 MergeTree,同时引入 ZK,做了复制,分布式表
Distributed,分布式引擎,本身不存储数据,相当于 mysql 的 merge 引擎,如果写入,会把请求丢到集群里的节点,如果查询,会帮你做查询转发再聚合返回
创建一个 clickhouse 表的 sql 如下所示:
1
2
3
4
5
6
7
8
9
|
CREATE TABLE `default`.ods_countlyV2 (
appKey String,
appVersion String,
deviceId String,
phone_no String,
create_time DateTime DEFAULT toDateTime(now())
) ENGINE = MergeTree PARTITION BY toYYYYMM(create_time)
PRIMARY KEY appKey
ORDER BY (appKey, create_time)
|
clickhouse 不需要设置字段长度,不同的类型对应的长度不一样。
整型范围
Int8-[-128:127]
Int16-[-32768:32767]
Int32-[-2147483648:2147483647]
Int64-[-9223372036854775808:9223372036854775807]
无符号整型范围
UInt8-[0:255]
UInt16-[0:65535]
UInt32-[0:4294967295]
UInt64-[0:18446744073709551615]
主键改类型很麻烦,不建议换主键类型。换主键类型会报以下错误。
clickhouse,没有自增主键,,没有自增主键,没有自增主键,不支持 auto_increment。