
# MRS ClickHouse数据源
MRS ClickHouse是一款华为云面向联机分析处理的列式数据库，其独立于Hadoop大数据体系，最核心的特点是压缩率和极速查询性能。同时，ClickHouse支持SQL查询，且查询性能好，特别是基于大宽表的聚合分析查询性能非常优异，比其他分析型数据库速度快一个数量级。
本数据集成服务全面支持华为云MRS-Clickhouse产品，支持MRS ClickHouse入湖出湖数据的稳定传输和处理。
#### 使用前准备及限制
- **网络要求**
  MRS ClickHouse数据源必须与CDM网络进行通讯，以确保数据传输的顺畅性。详情请参见[网络打通](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_7765.html)。
  
- **权限** **要求**
  - **读权限** ：如果需要从ClickHouse读取数据，需要为数据集成服务的IAM用户或用户组授予ClickHouse的只读权限，如**MRS ReadOnlyAccess** 系统策略，或者根据具体需求创建自定义策略，授予如**SELECT**等读取相关操作的权限。
  
  - **写权限：** 如果需要向ClickHouse写入数据，需要为数据集成服务的IAM用户或用户组授予ClickHouse的写入权限，如**MRS CommonOperations** 或**MRS FullAccess** 系统策略，或者创建自定义策略，授予如**INSERT INTO TABLE** 、**CREATE TABLE**等写入相关操作的权限。
  
  
  
  - **端口放通：** 在配置MRS ClickHouse数据源时，需要确保以下端口在安全组或自有网络已经放通，以供数据集成服务访问MRS使用。
    表1各服务端口说明 
    | **服务**         | **端口类型**   | **端口号** | **用途**                                        |
    |:---|:---|:---|:---|
    | ClickHouse     | TCP        | 9000    | ClickHouse TCP端口，用于客户端通过TCP连接到ClickHouse服务器。  |
    | ClickHouse     | HTTP       | 8123    | ClickHouse HTTP端口，用于通过HTTP连接到ClickHouse服务器。   |
    | ClickHouse     | HTTPS      | 8443    | ClickHouse HTTPS端口，用于通过HTTPS连接到ClickHouse服务器。 |
    | MRS Manager    | TCP        | 28443   | 下载MRS集群配置。                                    |
    | MRS Manager    | TCP        | 20009   | CAS认证端口。                                      |
    | MRS Manager    | TCP        | 20029   | Manager与其他组件之间的通信和管理操作。                       |
    | Kerberos (KDC) | TCP\&\&UDP | 21730   | Kerberos认证使用。                                 |
    | Kerberos (KDC) | TCP\&\&UDP | 21731   | Kerberos认证使用。                                 |
    | Kerberos (KDC) | TCP\&\&UDP | 21732   | Kerberos认证使用。                                 |
    | Zookeeper      | TCP        | 2181    | Zookeeper服务端口，用于客户端与Zookeeper集群之间的通信。         |
       
    
   
 
#### 支持的数据类型
不同ClickHouse版本支持的字段类型有所不同，字段类型支持以开源CK 21.3.4.25版本为基准，本数据集成服务兼容以下字段类型及其常见变体，确保在读写操作中能够准确处理各类数据：
| 类别     | ClickHouse字段类型 | 读取是否支持 | 写入是否支持 |
|:---|:---|:---|:---|
| 数值     | Int8           | √      | √      |
| 数值     | Int16          | √      | √      |
| 数值     | Int32          | √      | √      |
| 数值     | Int64          | √      | √      |
| 数值     | Int128         | √      | √      |
| 数值     | UInt8          | √      | √      |
| 数值     | UInt16         | √      | √      |
| 数值     | UInt32         | √      | √      |
| 数值     | UInt64         | √      | √      |
| 数值     | UInt128        | √      | √      |
| 数值     | Float32        | √      | √      |
| 数值     | Float64        | √      | √      |
| 数值     | Decimal        | √      | √      |
| 字符     | String         | √      | √      |
| 字符     | FixedString    | √      | √      |
| 时间     | Date           | √      | √      |
| 时间     | DateTime       | √      | √      |
| 时间     | DateTime64     | √      | √      |
| 布尔     | Boolean        | √      | √      |
| 数组     | Array          | √      | √      |
| 元组     | Tuple          | x      | x      |
| IP     | IPv4           | √      | √      |
| IP     | IPv6           | √      | √      |
| 枚举     | Enum8          | √      | √      |
| 枚举     | Enum16         | √      | √      |
| Nested | Nested         | x      | x      |
   
#### 支持的迁移场景
数据集成离线同步支持以下三种同步方式，以满足不同数据迁移场景的需求：
- **单表同步**
  适用于数据入湖和数据上云场景下，表或文件级别的数据同步。
  
- **分库分表同步**
  适用于数据入湖和数据上云场景下，多库多表同步场景。
  
- **整库迁移**
  适用于数据入湖和数据上云场景下，离线或自建数据库整体同步场景。
  
需要注意的是，分库分表与整库迁移能力会根据不同region的上线支持情况有所不同，具体支持情况以页面为准。以下是针对MRS ClickHouse的支持迁移场景概览：
| 支持迁移场景 | 单表读取 | 单表写入 | 分库分表读取 | 分库分表写入 | 整库读取 | 整库写入 |
|:---|:---|:---|:---|:---|:---|:---|
| 是否支持   | √    | √    | x      | √      | x    | x    |
   
#### 核心能力速览
- **连接配置**
  
  | 配置项        | 支持情况 | 说明                                     |
  |:---|:---|:---|
  | kerberos认证 | √    | 通过Kerberos认证方式访问MRS集群。                 |
  | 连接配置调优     | √    | 支持connectTimeout等连接配置调优，可根据实际需求优化连接性能。 |
     
  
- **读取能力**
  
  | 配置项    | 支持情况 | 说明                                        |
  |:---|:---|:---|
  | 分片并发   | √    | 支持按主键或常见字段做水平分片，多线程并行抽取，显著提升吞吐效率。         |
  | 脏数据处理  | √    | 支持异常数据写入脏数据桶，避免因少量异常数据导致作业失败。             |
  | 自定义字段  | √    | 可在任务级追加计算列、常量列或脱敏函数，满足个性化业务需求。            |
  | 增量读取   | √    | 支持where条件下发查询，可实现增量读取。                    |
  | 流批读取方式 | 批读   | 支持批量读取数据，适用于处理大规模静态数据集，可一次性读取大量数据并进行集中处理。 |
     
  
- **写入能力**
  
  | 配置项    | 支持情况 | 说明                                                  |
  |:---|:---|:---|
  | 导入前后处理 | √    | 支持preSql等操作，可在数据导入前后进行数据清洗和处理。                      |
  | 并发写入   | √    | 支持并发写入，提升写入效率。                                      |
  | 写入行数调优 | √    | 可根据需求配置单次写入的行数，合理控制数据传输量，优化性能，避免因数据量过大导致的传输延迟或系统压力。 |
  | 脏数据处理  | x    | 支持异常数据写入脏数据桶，避免因少量异常数据导致作业失败，暂不支持。                  |
     
  
 
#### 创建数据源
在DataArts Studio管理中心新建相应的数据源，详情请参见[创建DataArts Studio数据连接](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0009.html)。
#### 创建数据集成离线作业
在DataArts Studio数据开发中新建ClickHouse集成作业，详情请参见[新建离线处理集成作业](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1458.html)。
#### 最佳实践
[ClickHouse连接属性配置](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1542.html)
