基础操作

MapReduce BMR

  • 发行版本
  • 功能发布记录
  • 产品描述
    • 节点类型说明
    • 产品优势
    • 应用场景
    • 产品功能
    • 产品简介
  • Python-SDK
    • Cluster(集群)
    • BmrClient
    • 异常处理
    • InstanceGroup(实例组)
    • 简介
    • 文档更新记录
    • Step(作业)
    • 版本变更记录
    • Instance(实例)
    • 快速入门
    • 安装SDK工具包
  • 开源组件介绍
    • Impala
    • Pig
    • Druid
    • Presto
    • Hue
    • Ooize
    • HBase
    • Kudu
    • Sqoop
    • Hadoop-Streaming
    • Zeppelin
    • Alluxio
    • Kerberos
      • 集群互信配置
      • 概述
    • ClickHouse
      • 常见问题
      • 数据迁移同步
        • 从Spark导入
        • 从Kafka同步数据
        • 将自建ClickHouse数据迁移到云ClickHouse中
        • 从Flink导入
        • 从MySQL导入和同步
        • 从本地数据导入
          • Parquet格式
          • JSON
          • SQL转储
          • CSV and TSV
      • 快速入门
        • 访问模式
        • 客户端登录
        • 创建ClickHouse集群
        • 基础操作
      • 运维相关操作
        • ClickHouse集群扩容
        • ClickHouse集群缩容
        • 日志配置说明
        • 监控告警配置
    • Ranger
      • ranger概述
      • 权限策略配置
    • Paimon
      • Hive示例
      • StarRocks示例
      • 联合查询示例
      • Flink示例
      • Spark示例
    • Flink
      • 基础使用
    • Trino
      • 基础使用
      • 概述
    • Spark
      • 引擎增强
      • 基础使用
    • Hive
      • 开发指南
        • 自定义函数(UDF)
      • 实践操作
        • Hive迁移
        • Hive操作HBase外表
      • 基础使用
        • Hive基础操作
        • Hive连接方式
  • Java-SDK
    • Cluster(集群)
    • 异常
    • BmrClient
    • InstanceGroup(实例组)
    • 日志
    • 文档更新记录
    • 版本更新记录
    • Step(作业)
    • Instance(实例)
    • 快速入门
    • 安装SDK工具包
    • 概述
  • 快速入门
    • 操作流程概览
    • 环境准备
    • 创建集群
    • 数据准备
    • 开发作业
    • 查看结果
    • ClickHouse
      • 导入数据
      • 创建数据库
      • 连接集群
      • 创建表
  • 操作指南
    • 集群模板
    • 服务管理
    • 集群配置
      • 用户管理
      • 弹性伸缩
      • 创建集群
      • 集群安全模式
      • EIP
      • Hive元数据说明
      • 集群审计
      • 配置已有集群
      • 安全组
    • 管理作业
      • 创建作业
      • 诊断、调优
      • 定时任务
      • 查看作业
    • 访问集群
      • 访问集群服务页面
      • 访问集群-openVPN访问集群
      • 使用OpenVPN提交Hadoop作业
      • SSH连接到集群
    • 实践操作
      • 存储数据至HBase
      • 导入数据
      • 编译Maven项目
      • Sqoop导入导出数据
        • 导出数据
    • 权限管理
      • 多用户访问控制
      • 用户管理
    • 集群管理
      • 节点管理
      • 监控报警
      • 集群指标
      • 资源管理
  • 服务等级协议SLA
    • BMR服务等级协议SLA
  • API参考
    • 通用说明
    • 公共头
    • 数据类型
    • 版本更新记录
    • 服务域名
    • 实例操作接口
    • 实例组操作接口
    • 集群操作接口
    • API简介
    • 错误码
  • 常见问题
    • 安全性问题
    • 计费类问题
    • 常见问题总览
    • 性能类问题
    • 配置类问题
    • 故障类问题
  • 视频专区
    • 操作指南
    • 产品介绍
  • 场景教程
    • 流式应用场景
    • 离线应用场景
    • 使用Hive分析网站日志
    • Sqoop应用文档
    • 定时分析日志数据
    • HIVE
      • 不同集群的 Hive 迁移方案
      • Hive 操作 Hbase 外部表
  • 产品定价
    • 转换计费方式
    • 计费项
    • 到期或欠费说明
    • 包年包月计费
    • 续费说明
    • 变更配置计费说明
    • 计费方式
    • 按需计费
    • 账单和用量查询
    • 退款说明
所有文档
menu
没有找到结果,请重新输入

MapReduce BMR

  • 发行版本
  • 功能发布记录
  • 产品描述
    • 节点类型说明
    • 产品优势
    • 应用场景
    • 产品功能
    • 产品简介
  • Python-SDK
    • Cluster(集群)
    • BmrClient
    • 异常处理
    • InstanceGroup(实例组)
    • 简介
    • 文档更新记录
    • Step(作业)
    • 版本变更记录
    • Instance(实例)
    • 快速入门
    • 安装SDK工具包
  • 开源组件介绍
    • Impala
    • Pig
    • Druid
    • Presto
    • Hue
    • Ooize
    • HBase
    • Kudu
    • Sqoop
    • Hadoop-Streaming
    • Zeppelin
    • Alluxio
    • Kerberos
      • 集群互信配置
      • 概述
    • ClickHouse
      • 常见问题
      • 数据迁移同步
        • 从Spark导入
        • 从Kafka同步数据
        • 将自建ClickHouse数据迁移到云ClickHouse中
        • 从Flink导入
        • 从MySQL导入和同步
        • 从本地数据导入
          • Parquet格式
          • JSON
          • SQL转储
          • CSV and TSV
      • 快速入门
        • 访问模式
        • 客户端登录
        • 创建ClickHouse集群
        • 基础操作
      • 运维相关操作
        • ClickHouse集群扩容
        • ClickHouse集群缩容
        • 日志配置说明
        • 监控告警配置
    • Ranger
      • ranger概述
      • 权限策略配置
    • Paimon
      • Hive示例
      • StarRocks示例
      • 联合查询示例
      • Flink示例
      • Spark示例
    • Flink
      • 基础使用
    • Trino
      • 基础使用
      • 概述
    • Spark
      • 引擎增强
      • 基础使用
    • Hive
      • 开发指南
        • 自定义函数(UDF)
      • 实践操作
        • Hive迁移
        • Hive操作HBase外表
      • 基础使用
        • Hive基础操作
        • Hive连接方式
  • Java-SDK
    • Cluster(集群)
    • 异常
    • BmrClient
    • InstanceGroup(实例组)
    • 日志
    • 文档更新记录
    • 版本更新记录
    • Step(作业)
    • Instance(实例)
    • 快速入门
    • 安装SDK工具包
    • 概述
  • 快速入门
    • 操作流程概览
    • 环境准备
    • 创建集群
    • 数据准备
    • 开发作业
    • 查看结果
    • ClickHouse
      • 导入数据
      • 创建数据库
      • 连接集群
      • 创建表
  • 操作指南
    • 集群模板
    • 服务管理
    • 集群配置
      • 用户管理
      • 弹性伸缩
      • 创建集群
      • 集群安全模式
      • EIP
      • Hive元数据说明
      • 集群审计
      • 配置已有集群
      • 安全组
    • 管理作业
      • 创建作业
      • 诊断、调优
      • 定时任务
      • 查看作业
    • 访问集群
      • 访问集群服务页面
      • 访问集群-openVPN访问集群
      • 使用OpenVPN提交Hadoop作业
      • SSH连接到集群
    • 实践操作
      • 存储数据至HBase
      • 导入数据
      • 编译Maven项目
      • Sqoop导入导出数据
        • 导出数据
    • 权限管理
      • 多用户访问控制
      • 用户管理
    • 集群管理
      • 节点管理
      • 监控报警
      • 集群指标
      • 资源管理
  • 服务等级协议SLA
    • BMR服务等级协议SLA
  • API参考
    • 通用说明
    • 公共头
    • 数据类型
    • 版本更新记录
    • 服务域名
    • 实例操作接口
    • 实例组操作接口
    • 集群操作接口
    • API简介
    • 错误码
  • 常见问题
    • 安全性问题
    • 计费类问题
    • 常见问题总览
    • 性能类问题
    • 配置类问题
    • 故障类问题
  • 视频专区
    • 操作指南
    • 产品介绍
  • 场景教程
    • 流式应用场景
    • 离线应用场景
    • 使用Hive分析网站日志
    • Sqoop应用文档
    • 定时分析日志数据
    • HIVE
      • 不同集群的 Hive 迁移方案
      • Hive 操作 Hbase 外部表
  • 产品定价
    • 转换计费方式
    • 计费项
    • 到期或欠费说明
    • 包年包月计费
    • 续费说明
    • 变更配置计费说明
    • 计费方式
    • 按需计费
    • 账单和用量查询
    • 退款说明
  • 文档中心
  • arrow
  • MapReduceBMR
  • arrow
  • 开源组件介绍
  • arrow
  • ClickHouse
  • arrow
  • 快速入门
  • arrow
  • 基础操作
本页目录
  • 表操作
  • 本地表
  • 分布式表
  • 副本表

基础操作

更新时间:2025-08-21

表操作

本地表

  • 创建本地表:
Plain Text
1CREATE TABLE `check_local` (
2   `Id` UInt16,
3   `Name` String,
4   `CreateDate` Date)
5 ENGINE = MergeTree()
6 PARTITION BY CreateDate 
7 ORDER BY Id;
  • 本地表插入数据:
Plain Text
1 insert into check_local (Id, Name, CreateDate) values (1, 'aa', '2020-01-01');
  • 本地表查询数据:
Plain Text
1select * from check_local;

分布式表

  • 在默认集群上批量建立本地表:
Plain Text
1CREATE TABLE `check_local2` ON CLUSTER default_cluster (
2  `Id` UInt16,
3  `Name` String,
4  `CreateDate` Date)
5 ENGINE = MergeTree()
6 PARTITION BY CreateDate 
7 ORDER BY Id;

备注:ClickHouse集群支持分布式DDL语句,即在DDL语句上加上ON CLUSTER <cluster_neme>的语法,使得该DDL语句执行一次便可在所有实例上创建该表。默认集群名字为default_cluster。

  • 创建分布式表:
Plain Text
1 CREATE TABLE dis_check_all ON CLUSTER default_cluster
2 AS check_local2
3 ENGINE = Distributed(default_cluster, default, check_local2, rand());
  • 分布式表插入语法同本地表:
Plain Text
1 insert into dis_check_all (Id, Name, CreateDate)values (1,'aa','2020-01-01');

或者

Plain Text
1 insert into dis_check_all values (1,'aa','2020-01-01');
  • 分布式表查询:
Plain Text
1select * from dis_check_all;

副本表

注意,如果创建的不是副本表(replicated table),数据完整性,在宕机、故障的时候无法保证。

请在不添加参数的情况下创建表。例如:

Plain Text
1ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/table_name', '{replica}', ver)
Plain Text
1ENGINE = ReplicatedMergeTree

前缀Replicated添加到表引擎名称。例如:ReplicatedMergeTree。

  • *MergeTree参数

zoo_path:ClickHouse Keeper中表的路径。

replica_name:ClickHouse Keeper中的副本名称。

other_parameters:用于创建复制版本的引擎的参数,例如ReplacingMergeTree中的版本。

例如:

Plain Text
1CREATE TABLE table_name
2(
3    EventDate DateTime,
4    CounterID UInt32,
5    UserID UInt32,
6    ver UInt16
7ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/{layer}-{shard}/table_name', '{replica}', ver)
8PARTITION BY toYYYYMM(EventDate)
9ORDER BY (CounterID, EventDate, intHash32(UserID))
10SAMPLE BY intHash32(UserID);

弃用语法示例:

Plain Text
1CREATE TABLE table_name
2(
3    EventDate DateTime,
4    CounterID UInt32,
5    UserID UInt32
6) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/table_name', '{replica}', EventDate, intHash32(UserID), (CounterID, EventDate, intHash32(UserID), EventTime), 8192);

如示例所示,这些参数可以包含大括号内的替换值。替换值取自配置文件的宏部分。

例如:

Plain Text
1<macros>
2    <shard>02</shard>
3    <replica>example05-02-1</replica>
4</macros>

ClickHouse Keeper 中表的路径对于每个复制表应该是唯一的。不同分片上的表应该有不同的路径。在这种情况下,路径由以下部分组成:

/clickhouse/tables/是常用前缀。{shard}将扩展为分片标识符。table_name是 ClickHouse Keeper 中表的节点名称。最好将其与表名相同。它是明确定义的,因为与表名不同,它在 RENAME 查询后不会改变。 提示:您也可以在前面添加数据库名称table_name。例如db_name.table_name

可以使用两个内置的替换{database}和{table},它们分别展开为表名和数据库名(除非在宏部分定义了这些宏)。因此,动物园管理员路径可以指定为“/clickhouse/tables/{shard}/{database}/{table}”。使用这些内置替换时,请小心表重命名。ClickHouse Keeper中的路径无法更改,当重命名表时,宏将展开到其他路径,表将引用ClickHouse Keeper不存在的路径,并将进入只读模式。

副本名称标识同一表的不同副本。您可以使用服务器名称,如示例所示。名称只需要在每个分片中是唯一的。

您可以显式定义参数,而不是使用替换。这可能便于测试和配置小型集群。但是,在这种情况下,您不能使用分布式DDL查询(ON CLUSTER)。

在处理大型集群时,我们建议使用替换,因为它们可以降低出错的概率。

您可以在服务器配置文件中为副本表引擎指定默认参数。例如:

Plain Text
1<default_replica_path>/clickhouse/tables/{shard}/{database}/{table}</default_replica_path>
2<default_replica_name>{replica}</default_replica_name>

在这种情况下,可以在创建表时省略参数:

Plain Text
1CREATE TABLE table_name (
2    x UInt32
3) ENGINE = ReplicatedMergeTree
4ORDER BY x;

或者:

Plain Text
1CREATE TABLE table_name (
2    x UInt32
3) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/{database}/table_name', '{replica}')
4ORDER BY x;

对每个副本运行CREATE TABLE查询。此查询创建一个新的复制表,或向现有表添加一个新副本。

如果在表已包含其他副本上的一些数据后添加新副本,则在运行查询后,数据将从其他副本复制到新副本。换句话说,新的复制品会与其他复制品同步。

要删除副本,请运行DROP TABLE。但是,只会删除一个副本,即位于运行查询的服务器上的副本。

  • 数据丢失后恢复

如果其中一台服务器的所有数据和元数据都消失了,请按照以下步骤进行恢复:

  1. 在服务器上安装 ClickHouse。如果使用替换,请在包含分片标识符和副本的配置文件中正确定义替换。
  2. 如果您有未复制的表必须在服务器上手动复制,请从副本(在目录中/var/lib/clickhouse/data/db_name/table_name/)复制其数据。
  3. /var/lib/clickhouse/metadata/从副本中复制位于的表定义。如果在表定义中明确定义了分片或副本标识符,请更正它,使其与此副本相对应。(或者,启动服务器并ATTACH TABLE执行 中的 .sql 文件应包含的所有查询/var/lib/clickhouse/metadata/。)
  4. 要开始恢复,请创建具有任何内容的 ClickHouse Keeper 节点/path_to_table/replica_name/flags/force_restore_data,或运行命令来恢复所有复制的表:sudo -u clickhouse touch /var/lib/clickhouse/flags/force_restore_data 然后启动服务器(如果已在运行,则重新启动)。数据将从副本中下载。
  5. 另一种恢复选项是从 ClickHouse Keeper () 中删除有关丢失副本的信息,然后按照“创建复制表/path_to_table/replica_name”中所述再次创建副本。

恢复期间网络带宽不受限制。如果您要同时恢复多个副本,请注意这一点。

上一篇
创建ClickHouse集群
下一篇
运维相关操作