【发布时间】:2020-03-08 14:33:26
【问题描述】:
我一直在摆弄 ksqlDB,它真的很整洁。将数据导入 Kafka,创建流甚至表格都运行良好。我现在想将可视化层/BI 工具连接到表中的数据,以创建仪表板或一些交互式 BI 报告(例如 Superset、Redash 等)。
有没有办法将 JDBC 客户端直接连接到 ksqlDB / Kafka Streams,以便它可以查询 ksqlDB 中的表? This video 有点说我应该使用 REST API 将应用程序连接到结果,但是:
- REST API 是专有的,那么如何在不编写自定义连接器的情况下将诸如 BI 工具之类的东西连接到它?
- 如果我在生产/无头模式下运行 ksqlDB,则 REST API 无论如何都不可用。 (为什么??)
任何指针将不胜感激。
【问题讨论】:
-
什么是专有的??无头字面意思是没有任何外部暴露。而且 JDBC 不是流技术,所以它不会工作
-
@cricket_007 感谢您的问题,以相同的顺序回答:专有的意思是标准的可视化工具不会连接到它,即使它公开了一个基于 SQL 的接口。在 ksqlDB 文档中,“生产”模式与“无头”模式相同,而“API 开放”模式被宣传为“开发”——目前尚不清楚这是建议不要在生产中使用 API,还是只是一个它的名称不准确。
-
@cricket_007 Kafka 流和 ksqlDB 中的表不是流式实体,它们与普通表一样工作,只是它们会更新。您可以在它们上运行 ksqlDB 所谓的“拉查询”,就像常规的非流式 SQL 查询一样。我看不出 JDBC 不能促进这些“拉”查询的任何原因。
-
流式传输是指结果不会在您的 bi 工具中更新,除非您安排查询自行重新运行。我不确定您列出的工具是否支持这一点。在任何情况下,您都可以在不使用 ksql 的情况下将 Presto 或 Hive 连接到 Kafka,然后将 bi 工具连接到这些
标签: apache-kafka apache-kafka-streams ksqldb