【问题标题】:ksqlDB java client: not able to deserialize data from client.executeStatement()ksqlDB java客户端:无法从client.executeStatement()反序列化数据
【发布时间】:2022-09-29 14:29:51
【问题描述】:

我正在尝试使用以下代码使用 Java ksqlDb-api-client:0.24.0 在融合云上查询 KSQL 流

        ClientOptions options = ClientOptions.create()
                .setHost(KSQLDB_SERVER_HOST)
                .setPort(KSQLDB_SERVER_HOST_PORT)
                .setUseTls(true)
                .setUseAlpn(true)
                .setBasicAuthCredentials(USER_NAME,PASSWORD);

        Client client = Client.create(options);
        Map<String, Object> properties = Collections.singletonMap(\"auto.offset.reset\", \"earliest\");

        client.streamQuery(\"select * from process_payments EMIT CHANGES;\", properties)
                .thenAccept(streamedQueryResult -> {
                    System.out.println(\"Query has started. Query ID: \" + streamedQueryResult.queryID());
//                    RowSubscriber subscriber = new RowSubscriber();
//                    streamedQueryResult.subscribe(subscriber);

                }).exceptionally(e -> {
                    e.printStackTrace();
                    System.out.println(\"Request failed: \" + e);
                    return null;
                });

即使 RowSubscriber 被注释掉,我仍然收到以下异常,仅供参考,我的 msg 就像单个 String 列一样简单,以便于调试:

Caused by: java.lang.NoClassDefFoundError: io/confluent/ksql/schema/utils/FormatOptions
    at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
    at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3166)
    at java.base/java.lang.Class.getDeclaredMethods(Class.java:2309)
    at com.fasterxml.jackson.databind.util.ClassUtil.getClassMethods(ClassUtil.java:1231)
    ... 88 more
Caused by: java.lang.ClassNotFoundException: io.confluent.ksql.schema.utils.FormatOptions
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    ... 92 more

Request failed: java.util.concurrent.CompletionException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Failed on call to `getDeclaredMethods()` on class `io.confluent.ksql.schema.ksql.LogicalSchema`, problem: (java.lang.NoClassDefFoundError) io/confluent/ksql/schema/utils/FormatOptions
 at [Source: (byte[])\"{\"queryId\":\"transient_PROCESS_PAYMENTS_2977877146871246906\",\"columnNames\":[\"STATUS\"],\"columnTypes\":[\"STRING\"]}\"; line: 1, column: 1]

我错过了什么吗?

    标签: java apache-kafka-streams confluent-platform ksqldb confluent-cloud


    【解决方案1】:

    看起来您需要将 ksqldb-udf 添加到您的类路径中。该罐子包含FormatOptions

    【讨论】:

    • 非常感谢@Geo,添加“ksqldb-udf”解决了我的问题。
    【解决方案2】:

    我认为这是由于版本冲突。我也遇到了与版本7.2.1 完全相同的错误。它在 version6.0.1 中运行良好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-05
      • 1970-01-01
      • 2011-01-08
      • 1970-01-01
      相关资源
      最近更新 更多