离线实践
主要业务:用户分析和敏捷BI
数据导入:由外部事务保证的T+1离线数据
未命名文件.jpg
离线实践思路:
- 将数据根据业务逻辑使用Spark在Hive或HDFS将数据生成好,在HDFS上存放数据文件,一般是parquet格式
- 将HDFS上文件get获取,分散批量的导入到每个shard的MergeTree表中;不推荐使用distributed表
- 因为Clickhouse中没有事务控制,使用一个外部事务判断所有shard上的数据都处理好了,再让外部查询使用
不推荐使用Distributed分布式表的原因:
- 分布式表写入效率低
- 业务方高频写入拖垮文件系统
- 分布式表不能保证数据准确性,如果一个shard挂了,Clickhouse需要重新写入,可能会有重复问题
Clickhouse不使用Distributed表Insert原因.jpg
实时实践
两种方案:
Kafka -> Flink -> Clickhouse
-
Kafka Engine机制解析
Kafka Engine -> Materialized View -> MergeTree
Kafka Engine:- 描述 Topic
- 消费数据
- 解析数据
Materialized View:
- 描述数据流向
- SELECT语句
- ETL
MergeTree:
- 存储数据