public void compressBlock()

in backup-core/src/main/java/org/apache/iotdb/backup/core/service/ExportPipelineService.java [785:838]


  public void compressBlock(
      List<TimeSeriesRowModel> groupList, OutputStream outputStream, ExportModel exportModel) {
    // TODO: time 列表
    List<String> timeList = new ArrayList<>();
    // measurement 列表
    List<List<String>> list =
        groupList.stream()
            .map(
                s -> {
                  timeList.add(s.getTimestamp());
                  return s.getIFieldList().stream()
                      .map(IField::getField)
                      .collect(Collectors.toList());
                })
            .collect(
                ArrayList::new,
                (k, v) -> {
                  if (k.size() == 0) {
                    for (int i = 0; i < v.size(); i++) {
                      k.add(new ArrayList<>());
                    }
                  }
                  for (int i = 0; i < v.size(); i++) {
                    FieldCopy fieldCopy = v.get(i);
                    List<String> objectList = k.get(i);
                    if (fieldCopy == null
                        || fieldCopy.getObjectValue(fieldCopy.getDataType()) == null) {
                      objectList.add(null);
                    } else {
                      objectList.add(
                          String.valueOf(fieldCopy.getObjectValue(fieldCopy.getDataType())));
                    }
                  }
                },
                (k, v) -> {
                  for (int i = 0; i < k.size(); i++) {
                    k.get(i).addAll(v.get(i));
                  }
                });

    String blockHeader = "block";
    try {
      outputStream.write(blockHeader.getBytes());
    } catch (IOException e) {
      log.error("", e);
    }

    writeCompressData(timeList, outputStream, exportModel);

    for (int i = 0; i < list.size(); i++) {
      List<String> measurementList = list.get(i);
      writeCompressData(measurementList, outputStream, exportModel);
    }
  }