Pinot 是一个实时分布式的 OLAP 数据存储和分析系统。LinkedIn 使用它实现低延迟可伸缩的实时分析。Pinot 从离线数据源(包括 Hadoop 和各类文件)和在线数据源(如 Kafka)中攫取数据进行分析。Pinot 被设计是可以进行水平扩展的。
Pinot 特别适合这样的数据分析场景:分析模型固定,数据只追加以及低延迟,以及分析结果可查询。
关键特性:
面向列的数据库,提供多种压缩模式,如运行长度、固定比特长度
可插入式的索引技术,包括可排序索引、Bitmap 索引和反向索引
可根据查询和段元数据对查询和执行进行优化
近乎实时的从 Kafka 获取数据,以及批量从 Hadoop 获取数据
类 SQL 的语言支持查询、聚合、过滤、分组、排序和去重
支持多值字段
水平伸缩以及容错
Pinot 非常使用用来查询时许数据以及大维度的数组。
Pinot 的组件架构:
Pinot 核心概念:
示例查询:
/*Total number of documents in the table*/ select count(*) from baseballStats limit 0 /*Top 5 run scorers of all time*/ select sum('runs') from baseballStats group by playerName top 5 limit 0 /*Top 5 run scorers of the year 2000*/ select sum('runs') from baseballStats where yearID=2000 group by playerName top 5 limit 0 /*Top 10 run scorers after 2000*/ select sum('runs') from baseballStats where yearID>=2000 group by playerName limit 0 /*Select playerName,runs,homeRuns for 10 records from the table and order them by yearID*/ select playerName,runs,homeRuns from baseballStats order by yearID limit 1