如何解决除非强制唯一时间,否则influxdb-java的batchPoints将被覆盖?
我的项目当前正在使用influxdb-java连接到Influx 1.8.2。目前,我的代码如下所示:
InfluxDB connection = InfluxDBFactory.connect(server,client);
connection.enableBatch(100,10,TimeUnit.MILLISECONDS);
connection.setDatabase(database);
BatchPoints batchPoints = BatchPoints.database(database).build();
long currTime = System.currentTimeMillis()*1000000;
double[] data1 = getInfluxData();
for (int i=someInt; i < data1.length; i++){
if (i % someInt == 0){
double[] data2 = processData(data1,i-someInt,i);
for (int j=0; j < data2.length; j++){
Point p = Point.measurement(someTable)
.time(currTime+i+j,TimeUnit.NANOSECONDS) //Line A (j < someInt)
.tag("someTag","someTagValue")
.addField("someField",data2[j])
.build();
batchPoints.point(p)
}
}
connection.write(batchPoints);
connection.disableBatch();
connection.close();
当前,Line A
必须存在,否则似乎我的积分被自己覆盖,实际上只有1个积分会写到someTable
中。因此,Line A
是一个骇人听闻的解决方案,但这是我可以写下所有要点的唯一方法。像这样使用batchPoints的灵感来自于influx自己的example performance tests,它们甚至没有指定时间。那么,如果我做错了,导致Line A
的积分被覆盖?可能只是为了上下文而切换influxdb-client-java,以防可能缓解此问题。
解决方法
@以撒-
如果您使用的是InfluxDB 1.8+,我会考虑切换到influxdb-client-java
,因为它似乎维护频率更高。
对于使用influxdb-java
的代码示例,没有习惯使用BatchPoints构建器。我会在示例测试中说testWritePerformance
也很奇怪,并且该测试已被禁用。
我要隐藏很多代码。
// setup ...
BatchPoints.Builder batchPointsBuilder = BatchPoints.database(database);
// start for loops ...
batchPointsBuilder.point(p);
// finish loops ...
connection.write(batchPointsBuilder.build());
// setdown
但是查看Java代码和您的Java代码,我不认为这是问题所在,因为point(Point p)
将Point
附加到List
上。因此,这里不应该覆盖它。
如果省略时间戳记,则所有批次都将获得相同的时间戳记,因为批次将一次全部到达(这是在InfluxDB中确定遗漏时间戳记的方式-当Point到达时)。我看不到您的数据和标签,但是如果所有点都与字段键,标签键,标签值和时间戳相同,那么它们将相互覆盖/替换。我怀疑您的数据/标签/字段应该有所不同;仔细检查。
最后,我想请您检查(如果愿意,请分享)您如何知道所有要点都在覆盖自己?您正在使用什么查询?
〜您的示例代码中有一个错字:for (int i=someInt; i < data.length; i++){
-应该是data1
。〜
在InfluxDB中,即使具有不同的字段值,所有具有相同标签值和时间戳的点也被视为重复。因此,这些数据点被无提示地覆盖。这是根据InfluxDB design。
let array1 = [1,2,3,4,5,6,7];
const array2 = [2,5];
const array3 = array1.filter(a1 => !array2.includes(a1));
console.log(array3);
是的,这是设计使然。
Is it a limitation of influx that only one point can exist with the same tags and timestamp?
是的,它被默默覆盖。
已对此进行了记录,但效果不佳。我打开了influxdata / influxdb.com#324 解决这个问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。