【问题标题】:How to process stream data when KSQL server running in Headless mode?KSQL server 在 Headless 模式下运行时如何处理流数据?
【发布时间】:2020-07-09 13:13:46
【问题描述】:

我必须在生产服务器上部署 KSQL,所以我将交互模式更改为无头模式。创建了一个 SQL 脚本以在容器启动时加载所有流。现在我想查看流数据。有多少种方法可以看到这些实时流,比如我们可以将 KSQL 服务器连接到控制中心并实现这一点。但我不想像我们需要购买 Confluent 的企业版那样依赖。 请提出您的建议或意见。

【问题讨论】:

    标签: apache-kafka streaming confluent-platform ksqldb


    【解决方案1】:

    KSQL(或 ksqlDB 在技术上是正确的)是构建在 Apache Kafka 之上的流分析层。虽然这很拗口,对不同的人可能意味着不同的事情——在您的特殊情况下,这意味着如果您需要查看数据流,您可以简单地监控由 SQL 脚本的流/表创建的 Kafka 主题。

    在 ksqlDB 中,由连续查询支持的每个流和/或表都会将其结果刷新到生成的主题中,该主题包含前缀(这由 ksql.output.topic.name.prefix 配置参数决定)和流/表的名称.只需使用任何 CLI 工具(如 kafka-console-consumer、kafkacat 等)连接到 Kafka 集群并打印主题内容即可。

    【讨论】:

    • 我看不到流的主题。对于表格,我可以看到关于 Kafka 的主题。如果你愿意,我可以分享我的 yaml 文件。
    • 您应该能够看到由连续查询创建的任何主题。在 ksqlDB 中,有两种类型的流:包装主题源的流和实际作用于现有流的流。简单地包装主题源的那些不会有任何生成的主题,因为它们只是包装,因此数据包含在被包装的主题中。但是,任何从另一个流中读取数据的流都会为它生成一个主题。例如:[sourceTopic] ---> [stream1] ---> [stream2] 在这种情况下,您应该有一个名为“stream2”而不是“stream1”的新主题。
    • 感谢@Ricardo 的回复。在我的另一个问题中需要您的帮助,我创建了 JDBCSink 连接器来将我的事件转储到运行良好的数据库。现在我的问题与时间窗口有关。我制作了一个流,它正在计算过去 1 小时的事件并存储在数据库中。如果我在第一个小时有一些事件,那么这些事件将存储在数据库中,接下来的两个小时没有事件。现在,如果我签入 db,它仍然显示第一个小时的计数,但它必须显示计数为 0,因为最后一小时没有事件。我们如何才能做到这一点?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多