public boolean backfill()
throws Exception {
SegmentMetadataImpl originalSegmentMetadata = new SegmentMetadataImpl(_originalIndexDir);
String segmentName = originalSegmentMetadata.getName();
String tableName = originalSegmentMetadata.getTableName();
LOGGER.info("Start backfilling segment: {} in table: {}", segmentName, tableName);
PinotSegmentRecordReader segmentRecordReader = new PinotSegmentRecordReader(_originalIndexDir);
BackfillDateTimeRecordReader wrapperReader =
new BackfillDateTimeRecordReader(segmentRecordReader, _srcTimeFieldSpec, _destDateTimeFieldSpec);
LOGGER.info("Segment dir: {} Output Dir: {}", _originalIndexDir.getAbsolutePath(),
_backfilledIndexDir.getAbsolutePath());
LOGGER.info("Creating segment generator config for {}", segmentName);
SegmentGeneratorConfig config = new SegmentGeneratorConfig();
config.setFormat(FileFormat.PINOT);
config.setOutDir(_backfilledIndexDir.getAbsolutePath());
config.setOverwrite(true);
config.setTableName(tableName);
config.setSegmentName(segmentName);
config.setSchema(wrapperReader.getSchema());
StarTreeMetadata starTreeMetadata = originalSegmentMetadata.getStarTreeMetadata();
if (starTreeMetadata != null) {
config.enableStarTreeIndex(StarTreeIndexSpec.fromStarTreeMetadata(starTreeMetadata));
}
LOGGER.info("Creating segment for {} with config {}", segmentName, config.toString());
SegmentIndexCreationDriverImpl driver = new SegmentIndexCreationDriverImpl();
driver.init(config, new RecordReaderSegmentCreationDataSource(wrapperReader),
CompoundTransformer.getPassThroughTransformer());
driver.build();
return true;
}