0

让我知道我是否在此处发布了任何不正确的内容。(注意:KairosDB 位于 Cassandra 之上。使用 Hector)。

我正在使用 KairosDB Java 客户端将大量样本数据转储到数据存储中。我目前倾倒了 600 万,现在正尝试使用以下方法将其全部删除:

public static void purgeData(String metricsType, HttpClient c, int num, TimeUnit units){
    try {
        System.out.println("Beginning method");
        c = new HttpClient("http://localhost:8080/api/v1/datapoints/delete");
        QueryBuilder builder = QueryBuilder.getInstance();
        System.out.println("Preparing to delete info");
        builder.setStart(20, TimeUnit.MONTHS).setEnd(1, TimeUnit.SECONDS).addMetric(metricsType);
        System.out.println("Attempted to delete info");
        QueryResponse response = c.query(builder);
        //System.out.println("JSON: " + response.getJson());

    } catch (Exception e) {
        System.out.println("Adding data points produced an error");
        e.printStackTrace();
    }
}

请注意,我删除了时间间隔参数只是为了尝试一次删除所有数据。

执行此方法时,似乎没有删除任何点。我选择使用 JSON 形式的数据卷曲查询,并收到一个 HectorException,说明“所有主机池都标记为已关闭。重试负担推给客户端”。

我个人的结论是,600 万太多了,不能一次删除。我正在考虑一次删除部分,但我不知道如何限制从 KDB Java 客户端删除的行数。我知道 KairosDB 用于生产。人们如何使用 Java Client 有效地删除大量数据?

非常感谢你花时间陪伴!

4

2 回答 2

0

您可以使用 cqlsh 或 cassandra-cli 截断 KairosDBs 表(data_points、row_key_index、string_index)。我对 KairosDB 不够熟悉,不知道这是否会导致问题。

> truncate {your keyspace}.data_points;

可能需要几秒钟才能完成。

于 2015-07-23T22:11:15.870 回答
0

一次删除 600 万个数据点应该不会造成任何问题。

这个异常很奇怪,它最终意味着 Hector 无法与 cassandra 通信。您检查过 KairosDB 和 cassandra 日志文件是否一切正常?集群的 kairosdb.properties 中配置的所有协调器都还活着吗?

如果不是因为 cassandra,我建议在 KairosDB github 上针对您的问题提出一个问题,将查询的 JSON 与 KairosDB 的日志相关联。

kairosDB 中有两种删除数据的方法。

A) 如果您需要删除给定指标的所有数据点,您可以使用删除指标 API,它在后台调用相同的方法,因此期望相同的结果。但是它会快得多,因为您确保从 Cassandra 中删除所有匹配的行而不是单个单元格。

B) 如果您只需要删除一个指标的一些数据点,那么您已经使用了正确的方法。

在继续之前,我看到您没有在删除查询中定义标签,因此您将在时间间隔内删除此指标的所有系列的所有数据点......这是您想要做的吗?

最后,为了回答您的问题,我们正在对大量数据进行删除操作(批量重新插入数百万个样本,我们删除时间间隔内所有匹配的序列,然后重新插入)。我们的操作处理大量指标(数千个),因此删除查询非常大但效果很好,我们没有在同一指标上处理数百万个点,但除非你真的只有一个系列,否则结果应该是相同。

如果要删除的数百万个样本似乎是问题(我对此表示怀疑),您可以尝试以下操作:将您的删除查询分成几个时间间隔(在您的删除查询中放置多次相同的指标,但占总时间间隔的一小部分) ,因此您将减少一批中要删除的样本数量。

我希望这有帮助。

洛伊克

于 2015-07-29T07:53:09.583 回答