You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2022/01/18 09:10:28 UTC
[iotdb] 01/01: change session example
This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch ty-graduate
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 46e63f2643087d4dfd5c64b426d0b678239054f0
Author: JackieTien97 <ja...@gmail.com>
AuthorDate: Tue Jan 18 17:09:08 2022 +0800
change session example
---
example/session/pom.xml | 34 ++++++
.../main/java/org/apache/iotdb/SessionExample.java | 131 +++++++++++++--------
2 files changed, 117 insertions(+), 48 deletions(-)
diff --git a/example/session/pom.xml b/example/session/pom.xml
index 18de9bd..d98970b 100644
--- a/example/session/pom.xml
+++ b/example/session/pom.xml
@@ -40,4 +40,38 @@
<version>${project.version}</version>
</dependency>
</dependencies>
+ <profiles>
+ <profile>
+ <id>get-jar-with-dependencies</id>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>3.1.0</version>
+ <configuration>
+ <archive>
+ <manifest>
+ <mainClass>org.apache.iotdb.SessionExample</mainClass>
+ </manifest>
+ </archive>
+ <descriptorRefs>
+ <descriptorRef>jar-with-dependencies</descriptorRef>
+ </descriptorRefs>
+ </configuration>
+ <executions>
+ <execution>
+ <id>make-assembly</id>
+ <!-- this is used for inheritance merges -->
+ <phase>package</phase>
+ <!-- bind to the packaging phase -->
+ <goals>
+ <goal>single</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
</project>
diff --git a/example/session/src/main/java/org/apache/iotdb/SessionExample.java b/example/session/src/main/java/org/apache/iotdb/SessionExample.java
index ddb52a3..eaa44fb 100644
--- a/example/session/src/main/java/org/apache/iotdb/SessionExample.java
+++ b/example/session/src/main/java/org/apache/iotdb/SessionExample.java
@@ -21,7 +21,6 @@ package org.apache.iotdb;
import org.apache.iotdb.rpc.IoTDBConnectionException;
import org.apache.iotdb.rpc.StatementExecutionException;
-import org.apache.iotdb.rpc.TSStatusCode;
import org.apache.iotdb.session.Session;
import org.apache.iotdb.session.SessionDataSet;
import org.apache.iotdb.session.SessionDataSet.DataIterator;
@@ -63,26 +62,38 @@ public class SessionExample {
// set session fetchSize
session.setFetchSize(10000);
- try {
- session.setStorageGroup("root.sg1");
- } catch (StatementExecutionException e) {
- if (e.getStatusCode() != TSStatusCode.PATH_ALREADY_EXIST_ERROR.getStatusCode()) {
- throw e;
- }
+ // try {
+ // session.setStorageGroup("root.sg1");
+ // } catch (StatementExecutionException e) {
+ // if (e.getStatusCode() != TSStatusCode.PATH_ALREADY_EXIST_ERROR.getStatusCode()) {
+ // throw e;
+ // }
+ // }
+
+ if ("aligned".equals(args[0])) {
+ long totalRowNum = Long.parseLong(args[1]);
+ insertTablet(totalRowNum);
+ } else if ("nonAligned".equals(args[0])) {
+ long totalRowNum = Long.parseLong(args[1]);
+ insertAlignedTablet(totalRowNum);
+ } else {
+ String sql = args[1];
+ query(sql);
}
// createTemplate();
- createTimeseries();
- createMultiTimeseries();
- insertRecord();
- insertTablet();
+ // createTimeseries();
+ // createMultiTimeseries();
+ // insertRecord();
+ // insertTablet();
+ // insertAlignedTablet();
// insertTabletWithNullValues();
// insertTablets();
// insertRecords();
// selectInto();
// createAndDropContinuousQueries();
// nonQuery();
- // query();
+ // query();
// queryWithTimeout();
// rawDataQuery();
// lastDataQuery();
@@ -91,16 +102,16 @@ public class SessionExample {
// deleteTimeseries();
// setTimeout();
- sessionEnableRedirect = new Session(LOCAL_HOST, 6667, "root", "root");
- sessionEnableRedirect.setEnableQueryRedirection(true);
- sessionEnableRedirect.open(false);
-
- // set session fetchSize
- sessionEnableRedirect.setFetchSize(10000);
-
- insertRecord4Redirect();
- query4Redirect();
- sessionEnableRedirect.close();
+ // sessionEnableRedirect = new Session(LOCAL_HOST, 6667, "root", "root");
+ // sessionEnableRedirect.setEnableQueryRedirection(true);
+ // sessionEnableRedirect.open(false);
+ //
+ // // set session fetchSize
+ // sessionEnableRedirect.setFetchSize(10000);
+ //
+ // insertRecord4Redirect();
+ // query4Redirect();
+ // sessionEnableRedirect.close();
session.close();
}
@@ -361,7 +372,8 @@ public class SessionExample {
*
* <p>Users need to control the count of Tablet and write a batch when it reaches the maxBatchSize
*/
- private static void insertTablet() throws IoTDBConnectionException, StatementExecutionException {
+ private static void insertTablet(long totalRowNum)
+ throws IoTDBConnectionException, StatementExecutionException {
/*
* A Tablet example:
* device1
@@ -373,25 +385,26 @@ public class SessionExample {
// The schema of measurements of one device
// only measurementId and data type in MeasurementSchema take effects in Tablet
List<MeasurementSchema> schemaList = new ArrayList<>();
- schemaList.add(new MeasurementSchema("s1", TSDataType.INT64));
- schemaList.add(new MeasurementSchema("s2", TSDataType.INT64));
- schemaList.add(new MeasurementSchema("s3", TSDataType.INT64));
+ for (int i = 0; i < 10; i++) {
+ schemaList.add(new MeasurementSchema("s" + i, TSDataType.INT64));
+ }
- Tablet tablet = new Tablet(ROOT_SG1_D1, schemaList, 100);
+ Tablet tablet = new Tablet(ROOT_SG1_D1, schemaList, 10000);
// Method 1 to add tablet data
- long timestamp = System.currentTimeMillis();
-
- for (long row = 0; row < 100; row++) {
+ long timestamp = 0;
+ Random random = new Random(123456);
+ for (long row = 0; row < totalRowNum; row++) {
int rowIndex = tablet.rowSize++;
tablet.addTimestamp(rowIndex, timestamp);
- for (int s = 0; s < 3; s++) {
- long value = new Random().nextLong();
+ for (int s = 0; s < 10; s++) {
+ long value = random.nextLong();
tablet.addValue(schemaList.get(s).getMeasurementId(), rowIndex, value);
}
if (tablet.rowSize == tablet.getMaxRowNumber()) {
session.insertTablet(tablet, true);
tablet.reset();
+ System.out.println("already insert: " + row + " rows.");
}
timestamp++;
}
@@ -400,26 +413,47 @@ public class SessionExample {
session.insertTablet(tablet);
tablet.reset();
}
+ }
- // Method 2 to add tablet data
- long[] timestamps = tablet.timestamps;
- Object[] values = tablet.values;
+ private static void insertAlignedTablet(long totalRowNum)
+ throws IoTDBConnectionException, StatementExecutionException {
+ /*
+ * A Tablet example:
+ * device1
+ * time s1, s2, s3
+ * 1, 1, 1, 1
+ * 2, 2, 2, 2
+ * 3, 3, 3, 3
+ */
+ // The schema of measurements of one device
+ // only measurementId and data type in MeasurementSchema take effects in Tablet
+ List<MeasurementSchema> schemaList = new ArrayList<>();
+ for (int i = 0; i < 10; i++) {
+ schemaList.add(new MeasurementSchema("s" + i, TSDataType.INT64));
+ }
- for (long time = 0; time < 100; time++) {
- int row = tablet.rowSize++;
- timestamps[row] = time;
- for (int i = 0; i < 3; i++) {
- long[] sensor = (long[]) values[i];
- sensor[row] = i;
+ Tablet tablet = new Tablet(ROOT_SG1_D1, schemaList, 1000);
+
+ // Method 1 to add tablet data
+ long timestamp = 0;
+ Random random = new Random(123456);
+ for (long row = 0; row < totalRowNum; row++) {
+ int rowIndex = tablet.rowSize++;
+ tablet.addTimestamp(rowIndex, timestamp);
+ for (int s = 0; s < 10; s++) {
+ long value = random.nextLong();
+ tablet.addValue(schemaList.get(s).getMeasurementId(), rowIndex, value);
}
if (tablet.rowSize == tablet.getMaxRowNumber()) {
- session.insertTablet(tablet, true);
+ session.insertAlignedTablet(tablet, true);
tablet.reset();
+ System.out.println("already insert: " + row + " rows.");
}
+ timestamp++;
}
if (tablet.rowSize != 0) {
- session.insertTablet(tablet);
+ session.insertAlignedTablet(tablet);
tablet.reset();
}
}
@@ -621,14 +655,15 @@ public class SessionExample {
session.deleteTimeseries(paths);
}
- private static void query() throws IoTDBConnectionException, StatementExecutionException {
- try (SessionDataSet dataSet = session.executeQueryStatement("select * from root.sg1.d1")) {
- System.out.println(dataSet.getColumnNames());
- dataSet.setFetchSize(1024); // default is 10000
+ private static void query(String sql) throws IoTDBConnectionException, StatementExecutionException {
+ long startTime = System.currentTimeMillis();
+ try (SessionDataSet dataSet = session.executeQueryStatement(sql)) {
+ dataSet.setFetchSize(10000); // default is 10000
while (dataSet.hasNext()) {
- System.out.println(dataSet.next());
+ dataSet.next();
}
}
+ System.out.println("cost: " + (System.currentTimeMillis() - startTime) + "ms");
}
private static void query4Redirect()