当前位置:   article > 正文

clickhouse-kakfa_clickhouse kafka_format

clickhouse kafka_format

新鲜的尝试

  1. 最近etl写得太多了,都是使用flink从kafka经过稍微处理写入到clickhouse
  2. 看着clickhouse官网,偶然间发现了一个有趣的东西,Kafka引擎
  3. clickhouse默认支持kafka表引擎,kafka一些参数:
    1. 必要参数:
    2. kafka_broker_list – 以逗号分隔的 brokers 列表 (localhost:9092)。
    3. kafka_topic_list – topic 列表 (my_topic)。
    4. kafka_group_name – Kafka 消费组名称 (group1)。如果不希望消息在集群中重复,请在每个分片中使用相同的组名。
    5. kafka_format – 消息体格式。使用与 SQL 部分的 FORMAT 函数相同表示方法,例如 JSONEachRow。
    6. 可选参数:
    7. kafka_row_delimiter - 每个消息体(记录)之间的分隔符。
    8. kafka_schema – 如果解析格式需要一个 schema 时,此参数必填。例如,需要 schema 文件路径以及根对象 schema.capnp:Message 的名字。
    9. kafka_num_consumers – 单个表的消费者数量。默认值是:1,如果一个消费者的吞吐量不足,则指定更多的消费者。消费者的总数不应该超过 topic 中分区的数量,因为每个分区只能分配一个消费者。

     

  4. 建表示例:ck-kafka参数可在建表是指定,也可使用ck设置的默认值
    1. CREATE TABLE queue (
    2. timestamp UInt64,
    3. level String,
    4. message String
    5. ) ENGINE = Kafka('localhost:9092', 'topic', 'group1', 'JSONEachRow');
    6. SELECT * FROM queue LIMIT 5;
    7. CREATE TABLE queue2 (
    8. timestamp UInt64,
    9. level String,
    10. message String
    11. ) ENGINE = Kafka SETTINGS kafka_broker_list = 'localhost:9092',
    12. kafka_topic_list = 'topic',
    13. kafka_group_name = 'group1',
    14. kafka_format = 'JSONEachRow',
    15. kafka_num_consumers = 4;
    16. CREATE TABLE queue2 (
    17. timestamp UInt64,
    18. level String,
    19. message String
    20. ) ENGINE = Kafka('localhost:9092', 'topic', 'group1')
    21. SETTINGS kafka_format = 'JSONEachRow',
    22. kafka_num_consumers = 4;

     

  5. 文档写得是:消费的消息会被自动追踪,并且每个消息在所有消费组里只会记录一次,保证了数据一致性语义

本地搭建环境

  1. 基于docker搭建zookeeper单点
    1.  docker run --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 zookeeper:3.5
    2. 命令解析自己去找吧,-p容器内部端口映射到服务器,没什么含量
  2. 启动kafka,基于docker单点
    1. docker run --name kafka -d -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 -e KAFKA_LISTENERS=PLAINTEXT://127.0.0.1:9092 --link zookeeper:zookeeper -t wurstmeister/kafka:2.12-2.1.1
    2. 命令解析一下,
      1. --link:链接另一个容器,参数格式为:目标容器名称:在本容器内的名称
      2. -e:配置容器内环境变量
    3. 很鸡肋的一个问题,kafka的命令行创建topic的脚本在/opt/kafka_20.1..../目录下的bin/,劳资找了半天
    4. 创建topic:
      1. 首选开启自动创建:auto.create.topics.enable=true
      2. 手动创建:kafka-topic.sh --zookeeper ip:prot --create --topic topicname --partitions 1 --replication-factor 1 --config max.message.bytes=64000 --config flush.messages=1
      3. 命令解析
        1. --zookeeper: 关联zookeeper,可选zookeeper地址: 可选zk集群,ip1:9092/mnt/../...,ip2:9092 逗号分隔
        2. --partition :指定分区数,这个参数需要根据broker数量决定
        3. --replication-factor:指定partition的replicas数,官网建议2
  3. docker ps 观察一下就好,至于clickhouse的启动命令,之前的博客创建过,这里不多做描述
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/527787
推荐阅读
相关标签
  

闽ICP备14008679号