Apache Pinot 是一个实时分布式 OLAP 数据仓库
Apache Pinot是一款实时分布式 OLAP 存储解决方案,旨在提供可扩展、低延迟的实时分析。
它可以从批量数据源(例如 HDFS、S3、Azure Data Lake、Google Cloud Storage)以及流式数据源(例如 Kafka)摄取数据。Pinot 的设计使其能够横向扩展,因此可以根据需要扩展到更大的数据集和更高的查询速率。
关于阿帕奇皮诺
Pinot 项目最初由 LinkedIn 开发,并于 2015 年移交给 Apache 基金会进行进一步的联合开发。该存储系统旨在应对不断添加新数据的环境,并经过精心设计,可提供最小且可预测的延迟,从而能够用于实时查询处理。
与其他大多数数据仓库和 OLAP 数据仓库解决方案一样,Pinot支持类似 SQL 的查询语言,支持选择、聚合、过滤、分组、排序和其他数据查询。
Apache Pinot提供水平扩展能力,并具备应对软硬件故障的容错和生存能力。复制和备份流程直接集成到数据存储中添加的数据处理周期中。一方面,这种方法显著简化了架构;但另一方面,它也引入了数据添加和可供查询之间的延迟。
数据存储在列式数据库的表中,支持多种压缩方案,并允许在一个字段中放置多个值。Pinot 提供了一个可插拔的索引系统,可以利用各种索引技术(有序索引、位图索引、倒排索引、StarTree 索引、布隆过滤器、范围索引、文本搜索索引(Lucence/FST)、JSON 索引、地理空间索引)。
Apache Pinot 的突出特点如下:
- 面向列– 具有各种压缩方案(例如游程长度和固定位长度)的面向列的数据库。
- 可插入索引:可插入索引技术、排序索引、位图索引、倒排索引。
- 查询优化- 能够根据查询和段元数据优化查询/执行计划。
- 流和批次的摄取: Hadoop 流的近实时摄取和批量摄取。
- 咨询: 基于 SQL 的查询执行引擎。
- 在摄取过程中实时更新插入: 大规模更新数据并保持一致性
- 多个值字段: 支持多值字段,允许您以逗号分隔值的形式查询字段。
- Kubernetes 上的云原生: Helm Chart 提供了水平可扩展、容错的集群部署,易于使用 Kubernetes 进行管理。
新版本的 Apache Pinot
值得一提的是,Apache Pinot 1.0 版本最近发布,它基本上总结了大量工作,以稳定代码库并考虑社区的愿望(考虑了 300 多条评论)。
此外,值得一提的是,新的多阶段查询引擎已充分发挥其潜力,支持表合并(JOIN)操作。最初使用的引擎在简单的筛选和聚合操作方面表现出色,但为了确保查询执行时间的可预测性,它不支持表连接操作。
新引擎包含用于处理复杂查询的中间阶段,其 SQL 语义接近 ANSI SQL。此外,新版本原生支持处理 JSON 数据,支持“NULL”值,集成了 Apache Spark 3.x,并改进了 Upsert 模式下表的实现(增加了段压缩并支持删除操作)。
最后,如果您想了解更多信息,需要知道该项目的代码是用 Java 编写的,并以 Apache 许可证发布。您可以通过以下链接找到有关新版本的详细信息。