Clickhouse实战处理(一)集成引擎和Distributed引擎之集成Hive

一、集成引擎

集成引擎集成第三方的存储和系统来读写数据,ClickHouse本身不存储数据。
集成引擎包含:

  1. Kafka
  2. MySQL
  3. ODBC
  4. JDBC
  5. HDF

Kafka引擎

1、Kafka引擎介绍

SELECT查询对于读取消息并不是很有用(除了调试),因为每个消息只能读取一次。
通常,将该引擎结合物化视图一起使用,使用方法:
(1)、使用Kafka引擎创建一个Kafka的消费者,并将其视为一个数据流。
(2)、创建所需结构的表。
(3)、创建一个物化视图,该视图转换来自引擎的数据并将其放入上一步创建的表中。
当物化视图添加至该引擎,它将会在后台收集数据。这就允许你从Kafka持续接收消息并使用
SELECT将数据转换为所需的格式。它们不直接从Kafka中读取数据,而是接收新记录,以block为
单位, 这样就可以写入具有不同详细信息级别的多个表(分组聚合或无聚合)中。
为了提高性能,接收到的消息将被分组为大小为max_insert_block_size的block(块)。如果block没
有在stream_flush_interval_ms时间内形成,则不管block的完整性如何,数据都将刷新到表中。
Kafka引擎
要停止接收topic数据或更改转换逻辑,需detach物化视图。
DETACH TABLE consumer;
ATTACH MATERIALIZED VIEW consumer;
如果要使用ALTER更改目标表,建议禁用物化视图,以避免目标表和该视图中的数据之间出现差异。

2、kafka的参数和示例

Kafka引擎结合Kafka使用,可实现订阅或发布数据流。
指定表引擎:
ENGINE = Kafka()
SETTINGS
kafka_broker_list = ‘host:port’,
kafka_topic_list = ‘topic1,topic2,…’,
kafka_group_name = ‘group_name’,
kafka_format = ‘data_format’,
kafka_row_delimiter = ‘delimiter_symbol’,
kafka_schema = ‘’,
kafka_num_consumers = N,
kafka_skip_broken_messages = N

必选参数:
kafka_broker_list :以逗号分隔的brokers列表。
kafka_topic_list :以逗号分隔的kafka的topic列表。
kafka_group_name: Kafka消费组。
kafka_format :消息的格式,例如JSONEachRow。
可选参数:
kafka_row_delimiter :行之间的分隔符。
kafka_schema :按需定义schema,例如Cap'n Proto格式需指定。
kafka_num_consumers :消费者数量,默认1,最多不超过
Topic的分区数。
kafka_skip_broken_messages :每个block中,Kafka的消息解析器容忍schema不兼容消息的数量。默认值:0

创建Kafka引擎表示例
示例1:
CREATE TABLE queue (
timestamp UInt64,
level String,
message String
) ENGINE = Kafka(‘localhost:9092’,
‘topic’, ‘group1’, ‘JSONEachRow’);

示例2:
CREATE TABLE queue2 (
timestamp UInt64,
level String,
message String
) ENGINE = Kafka SETTINGS
kafka_broker_list =
‘localhost:9092’,
kafka_topic_list =
‘topic’,
kafka_group_name =
‘group1’,
kafka_format =
‘JSONEachRow’,

示例3:
CREATE TABLE queue2 (
timestamp UInt64,
level String,
message String
) ENGINE = Kafka(‘localhost:9092’, ‘topic’, ‘group1’)
SETTINGS kafka_format =
‘JSONEachRow’,
kafka_num_consumers = 4;

3、Kafka的扩展配置
Kafka引擎支持使用ClickHouse配置文件扩展配置。用户可以使用两个配置key, 全局的kafka和topic级别的kafka_*。首先应用全局配置,然后应用topic级别的配置。

cgrp smallest 250 100000 有关可能的配置选项的列表,参见librdkafka配置,链接: https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md 。 ClickHouse配置中使用下划线(_)代替点,例如,check.crcs=true 将配置为 true

MySQL引擎

1、MySQL引擎介绍

MySQL引擎可实现对MySQL数据库的表执行插入和查询操作。ClickHouse表结构可以不同于原始的MySQL表结构。
列名应当与原始MySQL表中的列名相同,但可以按任意顺序使用其中的一些列。列的数据类型可能与原始的MySQL表中的列类型不同,ClickHouse尝试进行数据类型转换。

2、MySQL表引擎参数:

ENGINE = MySQL(‘host:port’, ‘database’, ‘table’, ‘user’, ‘password’[, replace_query,
‘on_duplicate_clause’]);
引擎参数:

  1. host:port :MySQL server的地址。
  2. database :MySQL数据库名称。
  3. table : MySQL表名。
  4. user : MySQL用户名。
  5. password : MySQL用户密码。
  6. replace_query :将INSERT INTO查询转换为REPLACE INTO查询的标识。如果replace_query=1,查询将被替换。
  7. on_duplicate_clause : 将on_duplicate_clause的表达式添加到INSERT查询中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值