郴州品牌网站建设推广,网站开发商城,wordpress登录的图片,网站是由多个网页组成的吗文章目录 外部存储引擎分类MySQL引擎PostgreSQL引擎MongoDB引擎JDBC引擎ODBC引擎Kafka引擎RabbitMQ引擎File引擎URL引擎HDFS引擎 外部存储引擎分类
引擎类型描述特点MySQL从 MySQL 数据库中读取数据用于与 MySQL 数据库共享数据#xff0c;支持读取 MySQL 表中的数据 支持 SQ… 文章目录 外部存储引擎分类MySQL引擎PostgreSQL引擎MongoDB引擎JDBC引擎ODBC引擎Kafka引擎RabbitMQ引擎File引擎URL引擎HDFS引擎 外部存储引擎分类
引擎类型描述特点MySQL从 MySQL 数据库中读取数据用于与 MySQL 数据库共享数据支持读取 MySQL 表中的数据 支持 SQL 语法适合进行联合查询PostgreSQL从 PostgreSQL 数据库中读取数据用于与 PostgreSQL 数据库共享数据支持读取 PostgreSQL 表中的数据 支持 SQL 语法适合进行联合查询MongoDB从 MongoDB 数据库中读取数据用于与MongoDB数据库共享数据支持读取MongoDB表中的数据 支持 SQL 语法适合进行联合查询JDBC通过 JDBC 接口连接到外部数据库如Oracle、MySQL、PostgreSQL等允许通过 JDBC 连接多种数据库 适合与各种关系型数据库系统集成ODBC通过 ODBC 接口连接到外部数据库如Oracle、MySQL、PostgreSQL等允许通过 ODBC 连接多种数据库 适合与各种关系型数据库系统集成Kafka从Apache Kafka 消息队列系统读取实时流数据用于实时数据流分析支持高吞吐量 适合处理大规模、实时的消息流数据RabbitMQ从RabbitMQ 消息队列系统读取数据支持从 RabbitMQ 队列中实时读取消息数据 用于流式数据处理和消息队列集成File从本地或远程文件系统读取数据适用于读取或写入文件数据如 CSV、TSV、JSON 等格式URL通过 URL 从外部 Web 资源获取数据支持通过 HTTP 或 HTTPS 协议从指定 URL 获取数据适用于从外部网页、API 或文件中读取数据支持不同的格式如 JSON、XML、HTML 等可以通过 GET 或 POST 请求获取数据适合与外部 Web 服务、RESTful API 集成HDFS从 Hadoop 分布式文件系统HDFS读取数据用于大数据存储和处理适合与 Hadoop 生态系统集成。 支持读取大规模文件如 Parquet、ORC、Avro
MySQL引擎
MySQL 引擎允许从 MySQL 数据库中读取数据。它提供了一种与 MySQL 数据库进行集成的方式尤其在需要从 MySQL 中实时获取数据时非常有用。该引擎通过在 ClickHouse 中创建外部表来实现与 MySQL 数据库的交互。
使用场景
与现有 MySQL 系统集成如果你已经在使用 MySQL 作为业务数据库可以通过 ClickHouse 的 MySQL 引擎来进行高效的数据分析而不必将数据迁移到 ClickHouse。跨平台数据共享适用于跨平台或跨数据库系统的数据共享例如在 MySQL 和 ClickHouse 之间同步数据进行联合查询分析。报表与实时分析MySQL 数据库可能用于存储事务数据而 ClickHouse 可以对这些数据进行实时分析生成报表或进行 OLAP 查询。
支持功能
读取数据通过 MySQL 引擎ClickHouse 可以从 MySQL 数据库中读取数据进行分析。简单的查询操作支持常规的 SQL 查询语法如 SELECT, WHERE, JOIN 等。实时数据访问ClickHouse 与 MySQL 的连接是实时的查询会直接访问 MySQL 数据库中的数据而不是通过静态导入。不支持写入通过 MySQL 引擎创建的表仅支持从 MySQL 读取数据无法向 MySQL 表中写入数据。如果需要写入操作可以使用其他工具或方法进行数据迁移。
注意事项
延迟和吞吐量由于 ClickHouse 是面向 OLAP联机分析处理设计的而 MySQL 更适合 OLTP联机事务处理场景使用 MySQL 引擎读取数据时可能会受到 MySQL 性能的限制尤其是当查询涉及大量数据时。网络延迟如果 MySQL 数据库与 ClickHouse 部署在不同的网络环境中网络延迟可能会影响查询性能。
基本语法
CREATE TABLE mysql_table
(column1 DataType, -- 列名需要与mysql的列名保持一致column2 DataType,...
)
ENGINE MySQL(mysql_host:port, database_name, table_name, user, password)使用示例
create table test_MySQL
(id Int64,name String,log Decimal(10, 6),lat Decimal(10, 6),crt_time DateTime
)engine MySQL(127.0.0.1:3306, xxok, region_log_lat, root, 111111);PostgreSQL引擎
PostgreSQL 引擎允许 ClickHouse 直接读取 PostgreSQL 数据库中的数据。通过这个引擎可以在 ClickHouse 中使用类似 SQL 查询的方式访问 PostgreSQL 中存储的数据尤其适用于需要从 PostgreSQL 数据库中获取数据并进行 OLAP联机分析处理操作的场景。
使用场景
与现有 PostgreSQL 系统集成如果你的系统已经在使用 PostgreSQL 作为主要数据库可以利用 ClickHouse 的 PostgreSQL 引擎进行大规模的分析而无需迁移数据。跨系统数据共享适用于在 ClickHouse 和 PostgreSQL 之间进行数据共享和联合查询。例如你可以在 ClickHouse 中创建外部表查询 PostgreSQL 数据库中的数据同时利用 ClickHouse 的 OLAP 特性进行高效分析。报表与实时分析PostgreSQL 通常用于存储事务性数据而 ClickHouse 适合进行高效的实时数据分析。可以利用 ClickHouse 进行报表生成、数据分析等任务。
支持功能
读取数据通过 PostgreSQL 引擎ClickHouse 可以从 PostgreSQL 数据库中读取数据进行分析。常规查询支持标准 SQL 查询语法包括 SELECT、WHERE、JOIN 等。实时数据访问ClickHouse 与 PostgreSQL 的连接是实时的查询会直接访问 PostgreSQL 数据库中的最新数据。不支持写入通过 PostgreSQL 引擎创建的表只能用于读取数据无法向 PostgreSQL 表中写入数据。如果需要写入操作可以使用其他工具进行数据迁移或同步。
注意事项
延迟和吞吐量ClickHouse 是为 OLAP 场景优化的而 PostgreSQL 更适合 OLTP联机事务处理场景。因此使用 PostgreSQL 引擎- 时可能会受到 PostgreSQL 数据库性能的限制尤其是在查询大数据量时。网络延迟如果 ClickHouse 和 PostgreSQL 部署在不同的网络环境中网络延迟可能会影响查询性能尤其是在大数据量查询时。数据同步问题由于查询数据是通过实时连接获取的可能会受到 PostgreSQL 负载的影响导致查询延迟。
基本语法
CREATE TABLE mysql_table
(column1 DataType, -- 列名需要与PostgreSQL的列名保持一致column2 DataType,...
)
ENGINE PostgreSQL(PostgreSQL_host:port, database_name, table_name, user, password)使用示例
create table test_PostgreSQL
(id Int64,name String,log Decimal(10, 6),lat Decimal(10, 6),crt_time DateTime
)engine PostgreSQL(127.0.0.1:5432, npm, region_log_lat, postgres, 111111);MongoDB引擎
MongoDB 引擎Mongo 引擎允许用户直接从 MongoDB 数据库读取数据并将其作为外部数据源在 ClickHouse 中执行查询和分析。MongoDB 是一个文档数据库通常用于存储半结构化的 JSON 数据而 ClickHouse 是一个列式数据库擅长大规模的数据分析任务。通过 MongoDB 引擎ClickHouse 可以高效地从 MongoDB 中读取数据并结合 ClickHouse 的 OLAP联机分析处理能力进行快速查询和分析。
使用场景
与现有 MongoDB 系统集成 如果你的系统已经使用 MongoDB 存储数据可以利用 ClickHouse 的 MongoDB 引擎直接查询 MongoDB 数据库中的数据进行高效的分析而无需将数据迁移到 ClickHouse。跨系统数据共享 MongoDB 和 ClickHouse 是不同类型的数据库它们各自有独特的优势。使用 MongoDB 引擎可以方便地在两者之间共享数据例如在 ClickHouse 中创建外部表通过 SQL 查询 MongoDB 中的数据同时利用 ClickHouse 的列式存储和聚合性能来提高查询效率。实时数据分析 MongoDB 通常存储业务应用的实时数据而 ClickHouse 擅长 OLAP 查询。通过 MongoDB 引擎可以在 ClickHouse 中对 MongoDB 中存储的实时数据进行快速查询和分析支持业务报表和实时分析。
支持功能
读取数据 MongoDB 引擎允许 ClickHouse 直接读取 MongoDB 中的数据可以执行 SQL 查询语句从 MongoDB 中提取数据进行分析。常规查询 支持标准 SQL 查询包括 SELECT、WHERE、JOIN、GROUP BY 等常用操作允许用户对 MongoDB 中的数据进行灵活分析。实时数据访问 ClickHouse 会实时连接到 MongoDB 数据库进行查询确保查询到的数据是最新的。不支持写入 目前MongoDB 引擎仅支持从 MongoDB 中读取数据不能向 MongoDB 表中写入数据。如果需要将数据写入 MongoDB可以使用其他工具进行数据迁移或同步。
注意事项
查询延迟和吞吐量 由于 ClickHouse 是为 OLAP 场景优化的而 MongoDB 更适合存储非结构化的、频繁更新的文档数据使用 MongoDB 引擎时可能会面临查询性能上的限制尤其是在数据量较大时。网络延迟 如果 ClickHouse 和 MongoDB 部署在不同的网络环境中网络延迟可能会影响查询性能尤其是在大数据量查询时。MongoDB 数据模型 MongoDB 使用文档模型存储数据数据通常是嵌套的或包含数组类型这要求用户在创建 ClickHouse 表时根据 MongoDB 数据结构进行适配尤其是在处理嵌套文档或数组时。数据同步问题 由于 MongoDB 引擎是实时连接到 MongoDB 的这意味着如果 MongoDB 负载较高或存在写入操作可能会影响 ClickHouse 查询的响应速度。
基本语法
CREATE TABLE mongo_table
(column1 DataType, -- 列名需要与 MongoDB 的列名保持一致column2 DataType,...
)
ENGINE Mongo(mongodb_host:port, database_name, collection_name, user, password)mongodb_host:portMongoDB 实例的主机地址和端口。database_nameMongoDB 数据库名称。collection_nameMongoDB 中的集合名称类似关系型数据库中的表。userMongoDB 的用户名如需要认证。passwordMongoDB 的密码如需要认证。
使用示例
create table test_MongoDB
(id Int64,name String,log Decimal(10, 6),lat Decimal(10, 6),crt_time DateTime
)engine MongoDB(127.0.0.1:27017, user, region_log_lat, admin, abc11111);JDBC引擎
JDBC 引擎 允许通过 Java Database Connectivity (JDBC) 连接到外部的关系型数据库如 MySQL、PostgreSQL、Oracle、SQL Server 等。通过这个引擎ClickHouse 可以访问和查询其他数据库中的数据。JDBC 引擎是为了解决跨数据库查询和数据集成问题使得 ClickHouse 用户能够在不将数据迁移到 ClickHouse 本地的情况下直接查询外部数据库中的数据。
需要注意 JDBC 引擎依赖外部程序clickhouse-jdbc-bridge clickhouse-jdbc-bridge 是用于在 ClickHouse 和外部数据库如 MySQL之间进行数据交互的桥接服务如果该服务没有启动你将无法使用 JDBC 引擎连接到 MySQL 数据库。
使用场景
跨数据库查询在多数据源环境中ClickHouse 可以通过 JDBC 引擎读取不同数据库如 MySQL、Oracle 等中的数据进行联合查询和分析。适合需要跨多个系统汇总数据的场景。与现有关系型数据库集成如果你的业务已经依赖某些传统的关系型数据库如 MySQL、PostgreSQL 等但又需要使用 ClickHouse 进行大规模的数据分析JDBC 引擎可以帮助你在不迁移数据的情况下利用 ClickHouse 的 OLAP 特性进行高效分析。报表与实时分析对于需要生成实时报表或进行即时数据分析的场景JDBC 引擎提供了一种无缝集成的方式可以直接从关系型数据库中读取数据并进行分析。
支持功能
读取数据JDBC 引擎允许 ClickHouse 从其他关系型数据库读取数据进行 OLAP 查询。支持常规 SQL 查询ClickHouse 通过 JDBC 引擎支持标准的 SQL 查询语法包括 SELECT、WHERE、JOIN、GROUP BY 等操作可以对外部数据库的数据进行查询、过滤和聚合。实时数据访问ClickHouse 与外部数据库的连接是实时的查询结果会直接从外部数据库中获取最新的数据。不支持写入与 PostgreSQL 引擎类似JDBC 引擎只能用于读取数据不能直接向外部数据库中写入数据。如果需要数据写入可能需要借助其他工具进行数据同步或迁移。
注意事项
网络延迟由于 JDBC 引擎是通过网络访问外部数据库网络延迟可能会影响查询性能尤其是在数据量大或跨地域部署的情况下。外部数据库性能ClickHouse 是为 OLAP 场景优化的而许多传统关系型数据库如 MySQL、PostgreSQL主要优化 OLTP 场景。因此在高并发、大数据量的情况下外部数据库的性能瓶颈可能会影响查询速度。数据传输和吞吐量JDBC 查询通常需要跨网络传输数据可能会受到带宽和网络条件的限制从而影响查询性能。 连接池管理为了提高 JDBC 查询的效率通常需要在 ClickHouse 配置适当的连接池管理避免每次查询都重新建立连接。
基本语法
CREATE TABLE external_table_name
(column1 DataType,-- 列名需要与支持jdbc的数据库表的列名保持一致column2 DataType,...
)
ENGINE JDBC(uri, external_database, external_table)uri外部数据库的的URI URI格式:jdbc:driver_name://host_name:/?userpassword MySQL示例jdbc:mysql://localhost:3306/?userrootpasswordrootexternal_database外部数据库的数据库名external_table外部表名或类似select * from table1 where column11的查询语句
使用示例
create table test_JDBC_MySQL
(id Int64,name String,log Decimal(10, 6),lat Decimal(10, 6),crt_time DateTime
)engine JDBC(jdbc:mysql://127.0.0.1:3306/?userrootpasswordabc111111, xxok, region_log_lat);ODBC引擎
ODBC 引擎使得 ClickHouse 能够通过 ODBC 协议与外部数据库建立连接从而进行数据查询和集成。主要的区别在于ODBC 和 JDBC 提供的是不同的数据库连接标准ODBC 通常用于与 Windows 环境中的传统数据库系统如 SQL Server、Oracle、MySQL 等连接而 JDBC 则是 Java 专用的。
Kafka引擎
Kafka 引擎 允许 ClickHouse 从 Apache Kafka 中实时消费消息流并将这些消息存储到 ClickHouse 数据表中。Kafka 是一个分布式流处理平台广泛应用于实时数据处理和消息传递系统。通过 Kafka 引擎ClickHouse 能够直接从 Kafka 消费数据流并实时进行数据分析和查询。
Kafka 引擎提供了一个高效且灵活的方式用于将 Kafka 中的数据实时加载到 ClickHouse 中进行 OLAP在线分析处理查询。适用于需要实时流数据分析的场景如日志分析、实时监控、金融数据分析等。
使用场景
实时数据流分析Kafka 引擎使 ClickHouse 能够实时从 Kafka 中读取数据流进行分析。例如实时处理传感器数据、点击流数据、日志数据等。事件驱动架构在事件驱动架构中Kafka 扮演消息队列的角色ClickHouse 通过 Kafka 引擎消费事件流并进行实时处理适用于金融、广告、日志等业务领域。日志聚合和监控将来自不同服务的日志流通过 Kafka 发送到 ClickHouse进行日志分析和监控。
支持功能
实时消费ClickHouse 可以实时从 Kafka 消费数据适用于需要低延迟处理的应用场景。数据批量写入Kafka 引擎支持批量消费数据并定期将数据写入 ClickHouse 表中。支持多主题Kafka 引擎支持从多个 Kafka 主题消费数据并将其整合到 ClickHouse 中。
注意事项 Kafka 引擎表的数据流动方式 Kafka消费表不能直接作为结果表使用Kafka消费表只是用来消费Kafka数据没有真正的存储所有数据。Kafka 引擎表并不像普通的表一样直接存储数据。它仅仅是一个流处理的接口专门用于从 Kafka 消费数据。这个表本质上是一个 虚拟表它没有传统意义上的磁盘存储而是通过实时读取 Kafka 消息流的数据进行操作。因此你不能直接对 Kafka 引擎表进行查询操作来获取数据尤其是如果 Kafka 表没有物化视图或者目标表来接收数据时表本身不会存储数据。 数据不持久化 Kafka 引擎表会将 Kafka 消费的数据暂时存储在内存中或某种临时的缓存结构中并没有持久化存储在磁盘上。这使得在查询 Kafka 引擎表时无法直接查询到你期待的结果尤其是当数据还没有完全从 Kafka 流入到其他表时查询可能会没有返回数据。 延迟与批量消费 Kafka 引擎表通常是按 批量消费 或者定时从 Kafka 中读取数据的而不是实时地将每一条消息立即写入 ClickHouse 表。如果没有物化视图的帮助Kafka 中的数据可能不会被实时写入其他表中或者它们可能只会在某些条件下如批量写入或时间窗口才会被消费和同步。
基本语法
Kafka引擎表
CREATE TABLE external_table_name
(column1 DataType,column2 DataType,...
)
ENGINE Kafka(kafka_broker_list, kafka_topic_list, kafka_group_name, kafka_format)必要参数 kafka_broker_list以逗号分隔的 brokers 列表 (localhost:9092)。kafka_topic_list topic 列表 (my_topic)。kafka_group_nameKafka 消费组名称 (group1)。如果不希望消息在集群中重复请在每个分片中使用相同的组名。kafka_format消息体格式。使用与 SQL 部分的 FORMAT 函数相同表示方法例如 JSONEachRow、CSV等 可选参数 kafka_row_delimiter每个消息体记录之间的分隔符。kafka_schema如果解析格式需要一个 schema 时此参数必填kafka_num_consumers单个表的消费者数量。默认值是1如果一个消费者的吞吐量不足则指定更多的消费者。消费者的总数不应该超过 topic 中分区的数量因为每个分区只能分配一个消费者。
数据表
CREATE TABLE external_data_table_name
(column1 DataType,column2 DataType,...
)
ENGINE MergeTree物化视图用于同步数据
CREATE MATERIALIZED VIEW test_mv TO external_data_table_name AS
SELECTcolumn1,column2,...
FROMexternal_table_name;使用示例
Kafka引擎表
CREATE TABLE test_Kafka (id Int64,name String,log Decimal(10, 6),lat Decimal(10, 6),crt_time DateTime
) ENGINE Kafka(127.0.0.1:9092, test_clickhouse_topic, jhdsjkhdjk, JSONEachRow);数据表
CREATE TABLE test_Kafka_data (id Int64,name String,log Decimal(10, 6),lat Decimal(10, 6),crt_time DateTime
) ENGINE MergeTree
ORDER BYid;物化视图
CREATE MATERIALIZED VIEW test_Kafka_mv TO test_Kafka_data AS
SELECTid,name,log,lat,crt_time
FROMtest_Kafka;RabbitMQ引擎
RabbitMQ 引擎 允许 ClickHouse 直接订阅 RabbitMQ 消息队列实时消费队列中的消息并将消息存储到 ClickHouse 的表中。通过这种方式ClickHouse 可以作为一个高效的数据接收端来处理来自 RabbitMQ 的事件流特别适用于需要实时处理大规模事件数据的场景。
使用场景
实时数据流处理从 RabbitMQ 中获取实时产生的事件数据将其实时写入 ClickHouse 数据库进行分析和存储。日志处理和分析接收 RabbitMQ 中的日志事件执行数据清洗、转换然后存入 ClickHouse 以便于进行高效的日志分析。事件驱动架构用于基于事件触发的架构ClickHouse 可以订阅 RabbitMQ 事件队列实时存储消息内容并进行后续分析。
支持功能
实时消费数据 RabbitMQ 引擎表本质上是一个消费引擎ClickHouse 会持续从指定的 RabbitMQ 队列中拉取消息并将其存储到目标表中。灵活的数据处理 RabbitMQ 引擎能够处理不同类型的数据流尤其是当数据结构发生变化时可以通过 ClickHouse 的表结构定义来适应 RabbitMQ 消息的格式。高吞吐量 ClickHouse 的高性能特性使得它能够在实时处理流数据时保持较高的吞吐量适合大规模事件处理和分析。
注意事项 RabbitMQ 引擎表不存储数据 RabbitMQ 引擎表只是一个连接到 RabbitMQ 队列的“虚拟”表它会在每次查询时从消息队列拉取数据。它不像传统表那样持久化数据而是作为一个消费端。数据流入该表后通常会通过物化视图流转到其他存储表。由于其工作机制它本身并没有存储历史数据因此不能直接进行查询。 消息消费过程 当你创建一个 RabbitMQ 引擎表时ClickHouse 会持续从指定的 RabbitMQ 队列中拉取消息并将其传递到目标表中。每个查询触发时它只会拉取尚未消费的消息而消息一旦被消费并存储在目标表中它就不再出现在 RabbitMQ 引擎表中。因此你不能像查询普通表那样直接查询 RabbitMQ 引擎表它并不持有可查询的历史数据。 高吞吐量和实时性 RabbitMQ 引擎表的设计是为了处理高吞吐量的流式数据其目的是在数据流入系统时尽快地消费并存储。因此它的结构是针对消息流而非历史查询优化的。如果你需要历史数据查询或更复杂的数据分析应该依赖于已经将数据持久化到 ClickHouse 常规表中的物化视图。 为了能够查询 RabbitMQ 消费的消息数据通常需要设置一个物化视图。物化视图会将从 RabbitMQ 引擎表中消费到的数据写入到一个持久化的 ClickHouse 表中。因此查询 RabbitMQ 数据的正确方式是查询物化视图所同步的数据而不是直接查询 RabbitMQ 引擎表。
基本语法
RabbitMQ引擎表
CREATE TABLE external_table_name
(column1 DataType,column2 DataType,...
) ENGINE RabbitMQ
SETTINGSrabbitmq_host localhost,rabbitmq_port 5672,rabbitmq_user guest,rabbitmq_password guest,rabbitmq_queue queue_name,rabbitmq_exchange exchange_name,rabbitmq_routing_key routing_key;必要参数 rabbitmq_host_port主机名:端口号 (比如, localhost:5672)rabbitmq_exchange_nameRabbitMQ exchange 名称rabbitmq_format消息格式. 使用与SQLFORMAT函数相同的标记如JSONEachRow。 更多信息请参阅 Formats 部分 可选参数 rabbitmq_exchange_typeRabbitMQ exchange 的类型: direct, fanout, topic, headers, consistent_hash. 默认是: fanoutrabbitmq_routing_key_list一个以逗号分隔的路由键列表rabbitmq_row_delimiter用于消息结束的分隔符rabbitmq_schema如果格式需要模式定义必须使用该参数。比如, Cap’n Proto 需要模式文件的路径以及根 schema.capnp:Message 对象的名称rabbitmq_num_consumers每个表的消费者数量。默认1。如果一个消费者的吞吐量不够可以指定更多的消费者rabbitmq_num_queues队列的总数。默认值: 1. 增加这个数字可以显著提高性能rabbitmq_queue_base - 指定一个队列名称的提示。这个设置的使用情况如下rabbitmq_deadletter_exchange为dead letter exchange指定名称。你可以用这个 exchange 的名称创建另一个表并在消息被重新发布到 dead letter exchange 的情况下收集它们。默认情况下没有指定 dead letter exchange。Specify name for a dead letter exchangerabbitmq_persistent如果设置为 1 (true), 在插入查询中交付模式将被设置为 2 (将消息标记为 ‘persistent’). 默认是: 0rabbitmq_skip_broken_messagesRabbitMQ 消息解析器对每块模式不兼容消息的容忍度。默认值0. 如果rabbitmq_skip_broken_messages N那么引擎将跳过 N 个无法解析的 RabbitMQ 消息一条消息等于一行数据rabbitmq_max_block_sizerabbitmq_flush_interval_ms
ClickHouse 配置文件添加RabbitMQ 服务器配置/etc/clickhouse-server/config.xml 必要配置 rabbitmqusernameroot/usernamepasswordclickhouse/password/rabbitmq可选配置 rabbitmqvhostclickhouse/vhost/rabbitmq数据表
CREATE TABLE external_data_table_name
(column1 DataType,column2 DataType,...
)
ENGINE MergeTree物化视图用于同步数据
CREATE MATERIALIZED VIEW test_mv TO external_data_table_name AS
SELECTcolumn1,column2,...
FROMexternal_table_name;使用示例
RabbitMQ引擎表
CREATE TABLE test_RabbitMQ (id Int64,name String,log Decimal(10, 6),lat Decimal(10, 6),crt_time DateTime
) ENGINE RabbitMQ
SETTINGSrabbitmq_host_port 127.0.0.1:5672,rabbitmq_exchange_name exchange_fanout_fund_sub,rabbitmq_routing_key_list topic.*,rabbitmq_format JSONEachRow;配置文件/etc/clickhouse-server/config.xml rabbitmqusernameroot/usernamepasswordclickhouse/password/rabbitmq数据表
CREATE TABLE test_RabbitMQ_data (id Int64,name String,log Decimal(10, 6),lat Decimal(10, 6),crt_time DateTime
) ENGINE MergeTree
ORDER BYid;物化视图
CREATE MATERIALIZED VIEW test_RabbitMQ_mv TO test_RabbitMQ_data AS
SELECTid,name,log,lat,crt_time
FROMtest_RabbitMQ;总结
RabbitMQ 引擎表 设计为一个 流式消费 表它不能直接用于查询因为它并不持久化数据。查询 RabbitMQ 数据时通常需要通过 物化视图 将数据同步到一个常规的 ClickHouse 表中。如果你直接查询 RabbitMQ 引擎表通常会发现没有数据因为这些数据已经被消费并传递到目标表中。
File引擎
File 引擎是一种特殊的表引擎用于从本地或外部文件系统读取数据或将数据写入文件。它并不是一个传统的数据库表引擎而是用于从文件中直接加载数据或者将查询结果导出到文件。File 引擎支持多种格式如 CSV、TSV、JSON、Parquet 等适用于快速的数据导入、导出和批量处理场景。
使用场景
数据导入/导出将本地或外部文件的数据导入到 ClickHouse或者将 ClickHouse 表中的数据导出到文件中。数据交换与其他系统共享数据。通过将数据导出为标准文件格式如 CSV、JSON 或 Parquet可以方便地与其他数据处理工具进行交互。数据迁移在不同的数据库之间迁移数据时可以将数据导出为标准的文件格式然后导入到目标数据库。临时存储在处理大数据集时可以使用 File 引擎暂时存储计算结果以便后续使用或分析。
注意事项
性能使用 File 引擎时读取和写入速度通常较慢因为它依赖于文件 I/O 操作。对于大规模数据处理建议使用专门的存储引擎如 MergeTree 系列。数据一致性由于数据存储在外部文件中ClickHouse 不会保证文件的完整性和一致性。文件可能会在处理中被修改或删除这会导致查询结果不一致。支持的文件格式不同的文件格式有不同的使用场景选择合适的文件格式对于性能和存储效率非常重要。例如对于大数据量的处理Parquet 或 Avro 格式通常比 CSV 更高效。路径问题在使用 File 引擎时确保文件路径是正确的且 ClickHouse 有权限读取或写入该文件。
常见文件格式
CSV (CSV逗号分隔值)TabSeparated (TSV制表符分隔值)TSVWithNames带列名的 TSVJSONEachRow(JSON每行一个 JSON 对象)Parquet列式存储格式适用于大数据处理Avro二进制格式常用于数据流处理Protobuf二进制序列化格式
基本语法
CREATE TABLE table_name
(column1 DataType1,column2 DataType2,...
)
ENGINE File(file_format, file_path);file_format文件格式file_path文件路径
使用示例 CSV格式 CREATE TABLE test_File_CSV (id Int64,name String,log Decimal(10, 6),lat Decimal(10, 6),crt_time DateTime
) ENGINE File(CSV,/var/lib/clickhouse/user_files/data1.csv);data1.csv内容 1,haha,1.0,2.0,2024-02-02 00:00:00
1,haha,1.0,2.0,2024-02-02 00:00:00JSONEachRow格式 CREATE TABLE test_File_JSONEachRow (id Int64,name String,log Decimal(10, 6),lat Decimal(10, 6),crt_time DateTime
) ENGINE File(JSONEachRow,/var/lib/clickhouse/user_files/data2.JSONEachRow);data2.JSONEachRow内容 {id:1,name:John Doe,log:40.712776,lat:74.005974,crt_time:2024-11-28 07:21:38}
{id:1,name:John Doe,log:40.712776,lat:74.005974,crt_time:2024-11-28 07:21:38}
{id:1,name:John Doe,log:40.712776,lat:74.005974,crt_time:2024-11-28 07:21:38}
{id:1,name:John Doe,log:40.712776,lat:74.005974,crt_time:2024-11-28 07:21:38}总结
ClickHouse 的 File 引擎是一种非常灵活的工具适用于从文件中读取数据或将数据导出为不同格式的文件。它支持多种常见的数据格式并且适用于大多数批量数据处理和数据交换的场景。然而由于它是基于文件的存储使用时需要注意性能、文件一致性和格式选择等问题。
URL引擎
URL 引擎是用于从指定的 URL 地址加载数据的引擎。它通常用于处理从外部 Web 服务或者远程文件系统例如 HTTP 或 FTP 服务器获取的数据。URL 引擎可以让 ClickHouse直接从指定的 URL 读取数据并将其插入到指定的表中进行处理和分析。
使用场景
从外部 HTTP/FTP 服务器加载数据适用于从外部服务器拉取数据进行实时分析。例如从一个 Web 服务接口获取实时 JSON 数据或者从 FTP 服务器上获取 CSV 文件。异步数据加载在某些场景下ClickHouse 可以通过 URL 引擎异步地从外部 URL 加载数据以便在分析过程中动态更新数据。集成第三方服务数据ClickHouse 的 URL 引擎非常适合用来集成外部的第三方数据源例如从外部提供的数据 API 或者 Web 服务中加载数据。
支持功能
支持的协议HTTP、HTTPS、FTP、SFTP 等。支持的格式常见的结构化数据格式如 CSV、TSV、JSON、TabSeparated、JSONEachRow 等。
注意事项
网络延迟因为 URL 引擎从远程服务器加载数据网络延迟可能会影响数据的加载速度。如果 URL 地址响应缓慢可能会导致数据加载过程变慢。并发限制从外部服务器加载大量数据时可能会受到服务器并发请求的限制。需要确保远程服务器支持高并发连接。数据量和资源消耗从远程服务器加载大量数据时ClickHouse 可能会占用较多的内存和网络带宽。应确保服务器的资源足够支持大规模数据加载。缓存ClickHouse 不会缓存 URL 引擎加载的数据。每次查询都会从指定的 URL 获取最新的数据。权限问题如果你通过 HTTP/FTP 等协议加载数据时确保 URL 可公开访问或提供了适当的认证信息。ClickHouse 本身不处理 URL 访问的认证。错误处理如果 URL 指定的资源不可用或格式不正确ClickHouse 会返回错误提示无法加载数据。
常见文件格式
CSV (CSV逗号分隔值)TabSeparated (TSV制表符分隔值)TSVWithNames带列名的 TSVJSONEachRow(JSON每行一个 JSON 对象)Parquet列式存储格式适用于大数据处理Avro二进制格式常用于数据流处理Protobuf二进制序列化格式
基本语法
CREATE TABLE table_name
(column1 DataType,column2 DataType,...
)
ENGINE URL(URL, file_format);file_format文件格式URL文件URL
使用示例 CSV格式 CREATE TABLE test_URL_CSV (id Int64,name String,log Decimal(10, 6),lat Decimal(10, 6),crt_time DateTime
) ENGINE URL(http://127.0.0.1:9002/file/6749543efc3566d2e46b27b0.csv,CSV);6749543efc3566d2e46b27b0.csv内容 1,haha,1.0,2.0,2024-02-02 00:00:00
1,haha,1.0,2.0,2024-02-02 00:00:00JSONEachRow格式 CREATE TABLE test_URL_JSONEachRow (id Int64,name String,log Decimal(10, 6),lat Decimal(10, 6),crt_time DateTime
) ENGINE URL(http:///127.0.0.1:9002/file/67495527fc3566d2e46b27b1.JSONEachRow,JSONEachRow);67495527fc3566d2e46b27b1.JSONEachRow内容 {id:1,name:John Doe,log:40.712776,lat:74.005974,crt_time:2024-11-28 07:21:38}
{id:1,name:John Doe,log:40.712776,lat:74.005974,crt_time:2024-11-28 07:21:38}
{id:1,name:John Doe,log:40.712776,lat:74.005974,crt_time:2024-11-28 07:21:38}
{id:1,name:John Doe,log:40.712776,lat:74.005974,crt_time:2024-11-28 07:21:38}HDFS引擎
HDFS 引擎允许从 Hadoop 分布式文件系统HDFS 中读取和写入数据。HDFS 是一个大数据存储解决方案通常用于存储大量的结构化或非结构化数据广泛应用于大数据处理和分析平台。ClickHouse 的 HDFS 引擎为用户提供了与 HDFS 集成的能力使得在 ClickHouse 中处理和分析存储在 HDFS 上的数据变得简单和高效。
HDFS 引擎允许 ClickHouse 直接从 HDFS 中读取数据进行分析和计算。它不仅支持将数据写入 HDFS 目录还能从 HDFS 中读取不同格式的数据进行查询。通过 HDFS 引擎ClickHouse 可以轻松与 Hadoop 生态系统中的其他组件如 Hive、Spark 等集成并高效地处理大规模数据。
使用场景
大数据集成将 ClickHouse 作为数据仓库与 Hadoop 大数据生态系统中的其他组件如 Spark、Hive结合处理和分析存储在 HDFS 中的海量数据。日志和事件数据存储许多大数据平台将日志、传感器数据、监控数据等存储在 HDFS 上ClickHouse 的 HDFS 引擎可以方便地读取和分析这些数据。分布式文件存储当数据规模庞大且分布在多个节点上时HDFS 提供了一个可靠的存储解决方案而 ClickHouse 的 HDFS 引擎使得查询这些数据成为可能。
支持功能
数据压缩HDFS 支持多种压缩算法如 Gzip、Snappy 等。在读取压缩文件时ClickHouse 会自动处理这些压缩文件格式。分布式读取ClickHouse 可以并行读取 HDFS 上的数据从而利用分布式系统的优势加速查询和分析。支持多种格式HDFS 引擎支持多种存储格式包括但不限于 CSV、Parquet、ORC 和 JSON 等。用户可以根据数据规模、查询需求和性能考虑选择合适的格式。
注意事项
网络带宽和延迟HDFS 引擎的性能可能会受到网络带宽和延迟的影响特别是在跨数据中心或者跨网络访问 HDFS 时。要优化性能尽量确保 HDFS 集群的节点和 ClickHouse 实例之间的网络连接良好。数据量读取大量数据时可能会遇到性能瓶颈。ClickHouse 提供了分布式表和其他优化措施如分区来提高大数据量处理的效率。存储格式不同的存储格式如 Parquet 或 ORC对于大数据集的读取性能有显著影响列式存储格式通常比行式存储格式如 CSV 或 JSON更加高效。
基本语法
CREATE TABLE table_name
(column1 DataType,column2 DataType,...
)
ENGINE HDFS(path, format);path HDFS 引擎通过一个 HDFS URI 路径来访问文件。该路径包括 HDFS 的协议hdfs://以及实际存储数据的路径。 hdfs://namenode_host:/path/to/directoryHDFS 的地址可以是 hdfs://namenode:8020/ 这样的格式。format ClickHouse 支持多种数据格式的读取和写入包括但不限于CSV逗号分隔的文本格式。TSV制表符分隔的文本格式。JSONJSON 格式。Parquet列式存储格式适合大规模数据处理。ORC另一种列式存储格式适合大规模数据。 参考文章Clickhouse中文档