ClickHouse和ES在人群圈选上的对比

ClickHouse和ES在人群圈选上的对比

  • ES标签存储的痛点
  • ClickHouse替代ES标签存储
  • ES人群圈选
  • ClickHouse人群圈选
  • ClickHouse标签存储和人群圈选的优势
  • ClickHouse集成Bitmap
    • 什么是Bitmap
    • Bitmap位运算
    • Bitmap缺点
    • Bitmap压缩算法
      • RoaringBitmap原理
      • RoaringBitmap优点
    • ClickHouse标签表设计的2种思路
    • Hive导入数据到ClickHouse的几种方式
      • WaterDrop
      • 将Hive数据转换为ClickHouse的Bitmap

ES标签存储的痛点

  • 标签导入到ES的时间过长,需要等待各种数据准备就绪,才能关联查询
  • Mapping在建好之后不能更改字段类型
  • 新增或修改标签,不能够实时进行
  • ES的DSL语法对用户不太友好

ClickHouse替代ES标签存储

  • 相同数据量下,ClickHouse的聚合性能优于ES
  • ClickHouse写入吞吐量优于ES
  • ClickHouse数据压缩优于ES
  • ClickHouse采用SQL语法,学习成本低

ES人群圈选

ClickHouse和ES在人群圈选上的对比_第1张图片

ClickHouse人群圈选

ClickHouse和ES在人群圈选上的对比_第2张图片

ClickHouse标签存储和人群圈选的优势

  • 高效的批量数据导入性能
  • 实时update的能力
  • 具备添加/减少列的DDL的能力
  • 指定任意列作为过滤条件的高效查询能力

ClickHouse集成Bitmap

什么是Bitmap

  • 通过一个bit数组来存储特定数据的一种数据结构
  • Bitmap节省大量的存储空间
  • Bitmap能够能方便进行位运算

Bitmap位运算

  • 单个Bitmap可以精确的去重
  • 位运算:or、and、xor、not
  • 多个Bitmap通过位运算可以完成留存分析,用户画像分析等场景的计算

Bitmap缺点

  • 存储的Bitmap越大,需要的外部存储空间就越大
  • Bitmap位数越多,计算时消耗的cpu时间也越多
  • 当数据比较稀疏时,Bitmap比较浪费空间

Bitmap压缩算法

  • 基于RLE编码的压缩算法
  • 基于Roaring算法的压缩算法(被广泛使用的高效的Bitmap压缩算法)

RoaringBitmap原理

有3种类型的容器

  • Array Container
  • Run Container
  • Bitmap Container

对于32位的整数,划分为高16位和低16位
将低16位的数放入容器,当容器包含的数小于4096个,认为其稀疏,用Array Container保存
将低16位的数放入容器,当容器包含的数大于4096个,认为其密集,用Bitmap Container保存

ClickHouse和ES在人群圈选上的对比_第3张图片

RoaringBitmap优点

  • RoaringBitmap比Bitmap减少内存
  • RoaringBitmap在交集和并集操作速度比Bitmap快

ClickHouse标签表设计的2种思路

  • 大宽表
    缺点:增加或删除标签字段时,表结构需要修改;当圈选的人群数量较大时,涉及到groupby的性能差
  • Bitmap表

Hive导入数据到ClickHouse的几种方式

  • Spark使用JDBC
  • 通过dataX
  • 通过HDFS
  • 通过WaterDrop(主流方式)

WaterDrop

能够应用于Spark与Flink

  • 高性能
  • 简单易用
  • 海量数据处理能力
  • 多元数据处理

将Hive数据转换为ClickHouse的Bitmap

  1. 通过groupArray构造数组
  2. 构造物化视图
  3. 通过bitmapBuild构造Bitmap
  4. 插入到含有Bitmap数据类型的表

你可能感兴趣的:(大数据,实战项目,elasticsearch,大数据,big,data)