Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 1 addition & 6 deletions java/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.15.0</version>
<version>3.18.0</version>
</dependency>
<dependency>
<groupId>org.lz4</groupId>
Expand Down Expand Up @@ -95,11 +95,6 @@
<!-- This was the last version to support Java 8 -->
<version>1.3.15</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
5 changes: 0 additions & 5 deletions java/tsfile/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -87,11 +87,6 @@
<artifactId>logback-classic</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,42 @@ public class TSFileConfig implements Serializable {
*/
private String timeEncoding = "TS_2DIFF";

/** Encoder of boolean column. Default value is RLE. */
private String booleanEncoding = "RLE";

/** Encoder of int32 and date column. Default value is TS_2DIFF. */
private String int32Encoding = "TS_2DIFF";

/** Encoder of int64 and timestamp column. Default value is TS_2DIFF. */
private String int64Encoding = "TS_2DIFF";

/** Encoder of float column. Default value is GORILLA. */
private String floatEncoding = "GORILLA";

/** Encoder of double column. Default value is GORILLA. */
private String doubleEncoding = "GORILLA";

/** Encoder of string, blob and text column. Default value is PLAIN. */
private String textEncoding = "PLAIN";

/** Compression of boolean column. Defaults to the overall compression. */
private String booleanCompression = null;

/** Compression of int32 and date column. Defaults to the overall compression. */
private String int32Compression = null;

/** Compression of int64 and timestamp column. Defaults to the overall compression. */
private String int64Compression = null;

/** Compression of float column. Defaults to the overall compression. */
private String floatCompression = null;

/** Compression of double column. Defaults to the overall compression. */
private String doubleCompression = null;

/** Compression of string, blob and text column. Defaults to the overall compression. */
private String textCompression = null;

/**
* Encoder of value series. default value is PLAIN. For int, long data type, TsFile also supports
* TS_2DIFF, REGULAR, GORILLA and RLE(run-length encoding). For float, double data type, TsFile
Expand Down Expand Up @@ -288,6 +324,66 @@ public String getValueEncoder() {
return valueEncoder;
}

public String getValueEncoder(TSDataType dataType) {
switch (dataType) {
case BOOLEAN:
return booleanEncoding;
case INT32:
case DATE:
return int32Encoding;
case INT64:
case TIMESTAMP:
return int64Encoding;
case FLOAT:
return floatEncoding;
case DOUBLE:
return doubleEncoding;
case STRING:
case BLOB:
case TEXT:
default:
return textEncoding;
}
}

public CompressionType getCompressor(TSDataType dataType) {
String compressionName;
switch (dataType) {
case BOOLEAN:
compressionName = booleanCompression;
break;
case INT32:
case DATE:
compressionName = int32Compression;
break;
case INT64:
case TIMESTAMP:
compressionName = int64Compression;
break;
case FLOAT:
compressionName = floatCompression;
break;
case DOUBLE:
compressionName = doubleCompression;
break;
case STRING:
case BLOB:
case TEXT:
compressionName = textCompression;
break;
default:
compressionName = null;
}

CompressionType compressionType;
if (compressionName != null) {
compressionType = CompressionType.valueOf(compressionName);
} else {
compressionType = compressor;
}
return compressionType;
}

public void setValueEncoder(String valueEncoder) {
this.valueEncoder = valueEncoder;
}
Expand Down Expand Up @@ -568,4 +664,28 @@ public boolean isLz4UseJni() {
public void setLz4UseJni(boolean lz4UseJni) {
this.lz4UseJni = lz4UseJni;
}

public void setBooleanCompression(String booleanCompression) {
this.booleanCompression = booleanCompression;
}

public void setInt32Compression(String int32Compression) {
this.int32Compression = int32Compression;
}

public void setInt64Compression(String int64Compression) {
this.int64Compression = int64Compression;
}

public void setFloatCompression(String floatCompression) {
this.floatCompression = floatCompression;
}

public void setDoubleCompression(String doubleCompression) {
this.doubleCompression = doubleCompression;
}

public void setTextCompression(String textCompression) {
this.textCompression = textCompression;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,12 @@ public void overwriteConfigByCustomSettings(Properties properties) {
writer.setInt(conf::setFloatPrecision, "float_precision");
writer.setString(conf::setValueEncoder, "value_encoder");
writer.setString(conf::setCompressor, "compressor");
writer.setString(conf::setBooleanCompression, "boolean_compressor");
writer.setString(conf::setInt32Compression, "int32_compressor");
writer.setString(conf::setInt64Compression, "int64_compressor");
writer.setString(conf::setFloatCompression, "float_compressor");
writer.setString(conf::setDoubleCompression, "double_compressor");
writer.setString(conf::setTextCompression, "text_compressor");
writer.setInt(conf::setBatchSize, "batch_size");
writer.setBoolean(conf::setLz4UseJni, "lz4_use_jni");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public AlignedChunkWriterImpl(VectorMeasurementSchema schema) {
timeChunkWriter =
new TimeChunkWriter(
schema.getMeasurementId(),
schema.getCompressor(),
schema.getTimeCompressor(),
schema.getTimeTSEncoding(),
schema.getTimeEncoder());

Expand All @@ -70,7 +70,7 @@ public AlignedChunkWriterImpl(VectorMeasurementSchema schema) {
valueChunkWriterList.add(
new ValueChunkWriter(
valueMeasurementIdList.get(i),
schema.getCompressor(),
schema.getValueCompressor(i),
valueTSDataTypeList.get(i),
valueTSEncodingList.get(i),
valueEncoderList.get(i)));
Expand Down Expand Up @@ -122,7 +122,8 @@ public AlignedChunkWriterImpl(List<IMeasurementSchema> schemaList) {
TSEncoding timeEncoding =
TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getTimeEncoder());
TSDataType timeType = TSFileDescriptor.getInstance().getConfig().getTimeSeriesDataType();
CompressionType timeCompression = TSFileDescriptor.getInstance().getConfig().getCompressor();
CompressionType timeCompression =
TSFileDescriptor.getInstance().getConfig().getCompressor(TSDataType.INT64);
timeChunkWriter =
new TimeChunkWriter(
"",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@ public MeasurementSchema(String measurementId, TSDataType tsDataType) {
this(
measurementId,
tsDataType,
TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
TSFileDescriptor.getInstance().getConfig().getCompressor(),
TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder(tsDataType)),
TSFileDescriptor.getInstance().getConfig().getCompressor(tsDataType),
null);
}

Expand All @@ -74,7 +74,7 @@ public MeasurementSchema(String measurementId, TSDataType type, TSEncoding encod
measurementId,
type,
encoding,
TSFileDescriptor.getInstance().getConfig().getCompressor(),
TSFileDescriptor.getInstance().getConfig().getCompressor(type),
null);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ public TimeseriesSchema(String fullPath, TSDataType tsDataType) {
this(
fullPath,
tsDataType,
TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
TSFileDescriptor.getInstance().getConfig().getCompressor(),
TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder(tsDataType)),
TSFileDescriptor.getInstance().getConfig().getCompressor(tsDataType),
Collections.emptyMap());
}

Expand All @@ -66,7 +66,7 @@ public TimeseriesSchema(String fullPath, TSDataType type, TSEncoding encoding) {
fullPath,
type,
encoding,
TSFileDescriptor.getInstance().getConfig().getCompressor(),
TSFileDescriptor.getInstance().getConfig().getCompressor(type),
Collections.emptyMap());
}

Expand Down
Loading
Loading