public static DataStream<HoodieRecord> bootstrap(
            Configuration conf,
            RowType rowType,
            DataStream<RowData> dataStream,
            boolean bounded,
            boolean overwrite) {
        final boolean globalIndex = conf.getBoolean(FlinkOptions.INDEX_GLOBAL_ENABLED);
        if (overwrite || OptionsResolver.isBucketIndexType(conf)) {
            return rowDataToHoodieRecord(conf, rowType, dataStream);
        } else if (bounded && !globalIndex && OptionsResolver.isPartitionedTable(conf)) {
            return boundedBootstrap(conf, rowType, dataStream);
        } else {
            return streamBootstrap(conf, rowType, dataStream, bounded);
        }
    }
Constructs bootstrap pipeline.
The bootstrap operator loads the existing data index (primary key to file id mapping),
then send the indexing data set to subsequent operator(usually the bucket assign operator).

@param conf       The configuration
@param rowType    The row type
@param dataStream The data stream
@param bounded    Whether the source is bounded
@param overwrite  Whether it is insert overwrite
inlong-sort/sort-flink/sort-flink-v1.15/sort-connectors/hudi/src/main/java/org/apache/inlong/sort/hudi/sink/utils/Pipelines.java