历史版本22 :配置ClickHouse数据源 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本

 FineDataLink 版本功能变动
3.2
定时任务中支持读取 ClickHouse
3.7
定时任务支持写入 ClickHouse
4.0.28管道任务支持写入 ClickHouse
4.1.6.3数据服务支持 ClickHouse
4.1.13.3
数据开发-实时任务写入支持 ClickHouse
4.2.1.4数据开发-实时任务中的 DB 输出功能支持新增流的无主键插入
4.2.8.4适配高版本驱动

1.2 简介

ClickHouse 是面向列的数据库管理系统(DBMS),用于对查询进行联机分析处理(OLAP)。

FineDataLink 支持连接 ClickHouse,进行定时任务读写、管道任务写入、作为数据服务数据发布源、实时任务写入。

注:ClickHouse 数据库的引擎需要是 Atomic 引擎,才支持写入时自动建表功能。

2. 配置数据连接编辑

2.1 前提条件

详情请参见:前提条件

2.2 版本和驱动

下载驱动,并将其上传至 FineDataLink,如何上传可参见:驱动管理 第 2 节。

支持的数据库版本驱动下载
20.1

clickhouse

22.6

clickhouse4j-1.4.4-SNAPSHOT.jar


Clickhouse 8.5.zip
注:DateTime64 类型的完整范围为:[1900-01-01 00:00:00, 2299-12-31 23:59:59.99999999],若需使用完整范围,请使用此驱动。DateTime64 类型写入超出完整范围时,会随机填入一个在范围内的日期值。

2.3 具体连接步骤

创建数据连接步骤请参见:创建并管理数据源

配置数据连接时,驱动需要切换为「自定义」,换为本文 2.2 节的驱动。

39.png

3. 使用数据源编辑

3.1 数据开发-定时任务

配置好数据源后即可在「定时任务」中使用数据源,详情参见:数据开发概述

3.2 数据开发-实时任务

当 DB表输出选择 clickhouse:

5.0.0.4 及之后版本,当前任务中存在产生更新流的算子&写入 clickhouse 时,不支持无主键同步;会产生更新流的算子:CDC输入、分组汇总、数据关联(多个实时数据源进行关联)。

选择去向类型说明
已存在表

表类型为除 collapsingMergeTree 外的其他表引

  • 字段映射处,不展示主键列

  • 写入方式处,不支持配置主键映射,不支持配置逻辑删除

表引擎为 collapsingMergeTree 

字段映射:

  • 展示该表的排序键,即order by字段

  • 展示该表声明的sign字段,且该字段不能配置与来源表字段的映射关系

  • 当选择的表没有排序键时,报错:该表没有声明排序键,不支持写入

写入方式:

  • 直接使用排序键配置进行映射,不支持自定义

  • 支持配置逻辑删除

自动建表

仅支持 collapsingMergeTree 的逻

字段映射

  • 用户手动设置排序键,且必须配置排序键

  • 自动添加一个字段为sign字段,且该字段不能配置与来源表字段的映射关系在字段行中用提示 icon对sign字段进行说明:用于 clickhouse 表引擎进行数据合并

写入方式:

  • 直接使用排序键配置进行映射,不支持自定义

  • 支持配置逻辑删除

    1)当输出到除 collapsingMergeTree 外的其他表引擎时:

    • 将插入事件的数据直接插入到目标表。

    • 遇到删除事件、更新事件时则报错。

    2)当输出到 collapsingMergeTree 时,映射说明详情参见本文 3.3 节内容。

    3)目标端使用已存在表时,表中需要有_fdl_sign字段来标记删除情况。

    3.3 数据管道

    配置好数据源后即可在「数据管道」中将使用数据源,详情参见:数据管道概述

    clickhouse 作为写入端时字段映射说明

    当向目标表写入数据时,按照 CollapsingMergeTree 表引擎进行写入。

    选择去向类型说明
    自动建表

    使用 CollapsingMergeTree 表引擎,将逻辑主键设置为 order by 字段

    注:创建表时,来源表字段不能出现 sign ,会和标识增删改的 sign 字段重名导致同步失败。

    已存在表

    当选择已存在表时,只能选择由 CollapsingMergeTree 表引擎创建的表,并且要指定 order by 字段,在逻辑主键一列中进行展示

    注:如果能获取表的 order by 字段,则支持设置已存在表为目标表,否则不支持设置为目标表。

    clickhouse 作为目标端的写入逻辑为:

    • 对于插入的数据,直接 insert,并标记其 sign 为 1

    • 对于删除的数据,直接insert一条,逻辑主键的数据,并标记其sign为-1   如果是逻辑删除,insert 更新数据、sign 为 1 的数据即可

    • 对于更新的数据, insert 更新数据、sign 为 1 的数据即可。

    注:因为 CollapsingMergeTree 表的合并不定时,所以使用实时同步的表时,需要在使用前手动触发一次合并,或者在查询 SQL 使用集合方式,计算时去除掉重复数据的影响。

    方式一:直接在 SQL 中使用集合方式,集合示例如下所示:

    select name, sum(order_amt*sign) as order_amt from default.test_version_collapsing 
    group by name 
    having sum(sign) > 0

    方式二:在使用前触发一次合并,「OPTIMIZE TABLE test.ods_real_time_order FINAL

    方式三:直接在查询的 SQL 。select 表名后加 final ,比如 SELECT * FROM gbn_onl_mix.union_order_onl_all_test final WHERE dt = '2023-05-28'。

    3.4 数据服务

    配置好数据源后即可在「数据服务」中将使用数据源,详情参见:数据服务概述