【问题标题】:How to validate ksql script?如何验证 ksql 脚本?
【发布时间】:2022-01-19 14:34:42
【问题描述】:

我想知道是否有办法检查.ksql 脚本的语法是否正确?

我知道您可以向服务器发送POST 请求,但这也会执行包含的 ksql 命令。我希望有某种端点,您可以在其中传递您的语句,它会返回错误代码或 OK,例如:

curl -XPOST <ksqldb-server>/ksql/validate -d '{"ksql": "<ksql-statement>"}'.

我的问题旨在以一种自动方式检查语法,而无需事后清理所有内容。

感谢您的帮助!

注意:我也很清楚,我可以使用例如docker-compose 文件单独运行所有内容,然后再次删除所有内容。然而,这非常耗费资源并且难以维护。

【问题讨论】:

    标签: apache-kafka ksqldb


    【解决方案1】:

    一种选择可能是使用 ksql 测试运行器(参见此处:https://docs.ksqldb.io/en/latest/how-to-guides/test-an-app/)并查看错误以检查语句是否有效。让我知道它是否适用于您的场景。

    【讨论】:

    • 我对 ksql-test-runner 的一个问题是我无法对 .ksql 的外观做出假设,因此实际上不可能定义输入/输出文件。我能做的最具体的假设是主题的名称。虽然我喜欢这个测试运行器并且会尝试使用它!谢谢
    【解决方案2】:

    现在我已经找到了一种方法来测试我的用例。我已经有了一个 ksqldb 集群,其中包含 Kafka 生态系统所需的所有其他系统(Zookeeper、Broker 等)。我不得不做出一点妥协,但要努力部署所有东西,但这是我的方法:

    1. 为您的流、表、...使用正确的命名(让它以test 或任何适合您的用例为前缀)查询的接收器属性应包含前缀主题以便轻松找到它,或者您只需分配一个 QUERY_ID (https://github.com/confluentinc/ksql/pull/6553)。
    2. 使用其 REST API 将流、表等部署到您的 ksqldb 服务器。由于我使用 Python 进行编程,因此我使用了 ksql 包,使用 pip (https://github.com/bryanyang0528/ksql-python)。
    3. 通过过滤您分配给 ksql 资源的命名来清理 ksqldb 服务器并运行相应的 DROPTERMINATE 语句。还请考虑,您将具有导致多个流/表重用主题的依赖关系。可以在官方开发者指南 (https://docs.ksqldb.io/en/latest/developer-guide/ksqldb-reference/quick-reference/) 中查找这些声明。
    4. 如果您在第 2 步中出现错误,则第 3 步应该已经清理了剩余部分,以便您可以调整您的 ksql 脚本,直到它们顺利运行为止。

    注意:我无法对流...的外观做出任何假设。如果可以的话,我更喜欢ksql-test-runner

    【讨论】:

      猜你喜欢
      • 2018-06-13
      • 2011-07-18
      • 1970-01-01
      • 2011-03-20
      • 2021-01-03
      • 1970-01-01
      • 2011-11-15
      • 2017-05-26
      • 2010-10-23
      相关资源
      最近更新 更多