【问题标题】:How to read cassandra FQL logs in java?如何在 java 中读取 cassandra FQL 日志?
【发布时间】:2022-12-11 08:48:57
【问题描述】:

我有一堆带有“cq4”扩展名的 cassandra FQL 日志。我想用 Java 阅读它们,是否有可以将这些日志条目映射到的 Java 类?

这些是我看到的日志。

我想用这段代码阅读:

import net.openhft.chronicle.Chronicle;
import net.openhft.chronicle.ChronicleQueueBuilder;
import net.openhft.chronicle.ExcerptTailer;

import java.io.IOException;

public class Main{
    public static void main(String[] args) throws IOException {
        Chronicle chronicle = ChronicleQueueBuilder.indexed("/Users/pavelorekhov/Desktop/fql_logs").build();
        ExcerptTailer tailer = chronicle.createTailer();
        while (tailer.nextIndex()) {
            tailer.readInstance(/*class goes here*/)
        }
    }
}

我认为从代码和屏幕截图中您可以了解我需要什么样的类才能将日志条目读取到对象中。该类是否存在于某些 cassandra maven 依赖项中?

【问题讨论】:

    标签: cassandra chronicle


    【解决方案1】:

    您正在使用非常旧的 Chronicle 3.x。

    我建议使用 Chronicle 5.20.123,这是 Cassandra 使用的版本。

    我假设 Cassandra 有自己的工具来读取这些文件的内容,但是,您可以使用 net.openhft.chronicle.queue.main.DumpMain 转储原始消息

    【讨论】:

    • 是的,正如我刚才在回答中提到的,我想通了。为此,他们有一个名为FQLQueryIterator 的课程。谢谢。
    【解决方案2】:

    我最终从这里克隆了 cassandra 的 github 仓库:https://github.com/apache/cassandra

    在他们的代码中,他们有 FQLQueryIterator 类,您可以使用它来读取日志,如下所示:

    SingleChronicleQueue scq = SingleChronicleQueueBuilder.builder().path("/Users/pavelorekhov/Desktop/fql_logs").build();
    ExcerptTailer excerptTailer = scq.createTailer();
    
    FQLQueryIterator iterator = new FQLQueryIterator(excerptTailer, 1);
    
    while (iterator.hasNext()) {
        FQLQuery fqlQuery = iterator.next(); // object that holds the log entry
        // do whatever you need to do with that log entry...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      相关资源
      最近更新 更多