flink1.17使用clickhouse

使用的依赖为:

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 为:

image-20230602143854003

 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。

Licensed under CC BY-NC-SA 4.0
最后更新于 Jan 06, 2025 05:52 UTC
comments powered by Disqus
Built with Hugo
主题 StackJimmy 设计
Caret Up