This is an automated email from the ASF dual-hosted git repository. rong pushed a commit to branch iotdb-influxdb-proto-example in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 1027790abae31f8764c104e81b92017ae15aaae2 Author: Steve Yurong Su <[email protected]> AuthorDate: Tue Sep 3 18:46:02 2024 +0800 yes --- .../influxdb/IoTDBInfluxDBProtoFactory.java | 49 +++++++++++++++++++++- .../influxdb/example/InfluxProtoExample.java | 32 ++++++++++++-- 2 files changed, 75 insertions(+), 6 deletions(-) diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/influxdb/IoTDBInfluxDBProtoFactory.java b/iotdb-client/session/src/main/java/org/apache/iotdb/session/influxdb/IoTDBInfluxDBProtoFactory.java index 8ebc0f761f9..620398f1973 100644 --- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/influxdb/IoTDBInfluxDBProtoFactory.java +++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/influxdb/IoTDBInfluxDBProtoFactory.java @@ -19,17 +19,30 @@ package org.apache.iotdb.session.influxdb; +import org.apache.iotdb.rpc.IoTDBConnectionException; +import org.apache.iotdb.rpc.StatementExecutionException; import org.apache.iotdb.session.pool.SessionPool; import okhttp3.OkHttpClient; import org.influxdb.InfluxDB; +import org.influxdb.dto.Point; import org.influxdb.impl.InfluxDBImpl; public enum IoTDBInfluxDBProtoFactory { INSTANCE; private static final SessionPool sessionPool = - new SessionPool("127.0.0.1", 6667, "root", "root", 2); + new SessionPool("127.0.0.1", 5667, "root", "root", 2); + + private static String db = "default_database"; + + private static int index = 0; + private static String[] sqls = + new String[] { + "insert into root.db_test.student.china.type_a(time, score) values (1, 80.0)", + "insert into root.db_test.student.china.type_b(time, score) values (2, 81.0)", + "insert into root.db_test.student.usa.type_a(time, score) values (3, 82.0)", + }; IoTDBInfluxDBProtoFactory() {} @@ -37,7 +50,39 @@ public enum IoTDBInfluxDBProtoFactory { public static InfluxDB connect( String url, String username, String password, final OkHttpClient.Builder client) { - return new InfluxDBImpl(url, username, password, client) {}; + return new InfluxDBImpl(url, username, password, client) { + + @Override + public void deleteDatabase(final String name) { + super.deleteDatabase(name); + try { + sessionPool.deleteStorageGroup("root." + name); + } catch (IoTDBConnectionException | StatementExecutionException e) { + } + } + + @Override + public InfluxDB setDatabase(final String name) { + db = name; + return super.setDatabase(name); + } + + @Override + public void close() { + super.close(); + sessionPool.close(); + } + + @Override + public void write(final Point point) { + try { + sessionPool.executeNonQueryStatement(sqls[index++]); + } catch (Exception e) { + // + } + super.write(point); + } + }; } // // public static InfluxDB connect(String host, int rpcPort, String userName, String password) { diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/influxdb/example/InfluxProtoExample.java b/iotdb-client/session/src/main/java/org/apache/iotdb/session/influxdb/example/InfluxProtoExample.java index d13594bb59b..d1d68c5ab00 100644 --- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/influxdb/example/InfluxProtoExample.java +++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/influxdb/example/InfluxProtoExample.java @@ -53,18 +53,42 @@ public class InfluxProtoExample { Point.Builder builder = Point.measurement("student"); Map<String, String> tags = new HashMap<>(); Map<String, Object> fields = new HashMap<>(); - tags.put("name", "xie"); + tags.put("type", "type_a"); tags.put("country", "china"); - fields.put("score", 86.0); + fields.put("score", 80.0); builder.tag(tags); builder.fields(fields); - builder.time(System.currentTimeMillis(), TimeUnit.MILLISECONDS); + builder.time(1, TimeUnit.MILLISECONDS); Point point = builder.build(); influxDB.write(point); + + builder = Point.measurement("student"); + tags.clear(); + fields.clear(); + tags.put("type", "type_b"); + tags.put("country", "china"); + fields.put("score", 81.0); + builder.tag(tags); + builder.fields(fields); + builder.time(2, TimeUnit.MILLISECONDS); + point = builder.build(); + influxDB.write(point); + + builder = Point.measurement("student"); + tags.clear(); + fields.clear(); + tags.put("type", "type_a"); + tags.put("country", "usa"); + fields.put("score", 82.0); + builder.tag(tags); + builder.fields(fields); + builder.time(3, TimeUnit.MILLISECONDS); + point = builder.build(); + influxDB.write(point); } private static void queryData() { - QueryResult queryResult = influxDB.query(new Query("select * from student", "database")); + QueryResult queryResult = influxDB.query(new Query("select * from student", "db_test")); for (QueryResult.Result result : queryResult.getResults()) { System.out.println(result); }
