gpt4 book ai didi

java - InfluxDB批量写入的意外输出

转载 作者:太空宇宙 更新时间:2023-11-04 12:10:33 25 4
gpt4 key购买 nike

我正在使用批处理写入 InfluxDB,下面是我执行此操作的代码。

    String dbName = "test";
influxDB.query(new Query("CREATE DATABASE " + dbName, dbName));
Stopwatch watch = Stopwatch.createStarted();
influxDB.enableBatch(2000, 100, TimeUnit.MILLISECONDS);


for (int j = 0; j < 100000; j++) {
Point point = Point.measurement("cpu")
.addField("idle", (double) j)
.addField("system", 3.0 * j).build();
influxDB.write(dbName, "autogen", point);
}
influxDB.disableBatch();
System.out.println("Write for " + 100000 + " Points took:" + watch);
}

这里我正在写入 100000 个点,这花费了非常合理的时间来写入,但是只有很少的记录写入数据库,而不是预期的 100000 条记录。

select count(idle) from cpu 只给我“89”,我希望它是“100000”

虽然select * from cpu给了我以下内容:

cpu
time idle system
2016-10-06T23:57:41.184Z 8 24
2016-10-06T23:57:41.185Z 196 588
2016-10-06T23:57:41.186Z 436 1308
2016-10-06T23:57:41.187Z 660 1980
2016-10-06T23:57:41.188Z 916 2748
2016-10-06T23:57:41.189Z 1278 3834
2016-10-06T23:57:41.19Z 1405 4215
2016-10-06T23:57:41.191Z 1409 4227
2016-10-06T23:57:41.192Z 1802 5406
2016-10-06T23:57:41.193Z 1999 5997
2016-10-06T23:57:41.456Z 3757 11271
2016-10-06T23:57:41.457Z 3999 11997
2016-10-06T23:57:41.858Z 4826 14478 and so on.....

这里我的问题是为什么idle的值丢失了,例如,在8之后应该是9、10、11等等,但是这些值没有被持久化,直接是196,然后在436之间丢失。知道如何在这种情况下持久化循环变量“j”的所有值吗?

最佳答案

这一行

influxDB.enableBatch(2000, 100, TimeUnit.MILLISECONDS);

表示如果每 100 毫秒周期内有超过 2000 个样本,它将刷新输入数据。由于您尝试写入 100k 个样本,因此从逻辑上讲,它们中的大多数都会被刷新。

相反,在单个批处理中写入较少的样本。我的建议是在一个批处理中写入 5000 个样本,然后进行多个批处理,直到所有数据都在数据库中。

// Batch 1
influxDB.enableBatch(5000, 100, TimeUnit.MILLISECONDS);
for (int j = 0; j < 5000; j++) {
Point point = Point.measurement("cpu")
.addField("idle", (double) j)
.addField("system", 3.0 * j).build();
influxDB.write(dbName, "autogen", point);
}
influxDB.disableBatch();

// Batch 2
// ...

关于java - InfluxDB批量写入的意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39907489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com