Pinot - OLAP 存储和分析系统


Apache
跨平台
Java

软件简介

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