2

Apache pulsar 通过分层存储卸载器提供了一个非常有趣的架构。

我想知道如何从另一个应用程序进行交互式查询?我的意思是直接查询键值系统/“数据库”,而不是使用 pulsar-sql,它在下面使用 Presto。

在推特上的@sijieg 中,发布了以下架构: 在此处输入图像描述

看起来我可以访问 State-store(甚至是 Segment-reader)并直接访问 Bookies 中的数据(可能还有分层存储,根据 Metastore?)我们如何访问这些 State-store/Segment-reader并像 Flink-Pulsar 或 Spark-Pulsar 一样访问数据。

4

2 回答 2

0

一个快速的答案是“您不直接查询 Apache Pulsar”。但让我们更深入地了解一下。

Apache Pulsar 不是 RDBMS,其中 SQL 查询是处理数据的主要方式。如果您的系统需要 SQL 查询并且负载不是那么极端,则只需使用您选择的传统 RDBMS 或 NoSQL。

为什么很难对 Apache Pulsar 进行查询?主要原因是 Apache Pulsar 是一个分布式 pub-sub 消息传递系统,其中数据被视为无界流,这使得以高性能方式运行传统 SQL 查询变得困难。在这种情况下,解决方案是蒸汽处理引擎(Pulsar FunctionsApache FlinkApache Spark),可以在其中选择、转换和写入数据。

如果您仍然需要对存储在 Pulsar 中的某些数据运行查询,可以使用内置的 sink 连接器将此信息转发到 RDBMS 或 NoSQL 数据库。

对于分析,使用pulsar-sql直接与存储层(Bookies)通信就足够了。

于 2020-04-11T19:08:44.517 回答
0

我不确定您为什么反对使用使用 Presto 的 pulsar-sql。这是针对存储在 BookKeeper 存储层(在 bookie 磁盘和分层存储中)的数据执行基于 SQL 的复杂查询的首选方法。Presto 解析 SQL 并生成 AST 和查询计划以返回数据,因此它在这方面确实提供了很多价值。

但是,如果您有兴趣直接在 BK 上访问数据,则可以使用较旧的DLog API。或嵌入在 Bookies 中的新表(键/值)服务

于 2020-05-07T16:08:20.550 回答