@Override
    public void initialize(InputSplit split, TaskAttemptContext context)
            throws IOException, InterruptedException {
        this.conf = context.getConfiguration();
        sequenceFileRecordReader.initialize(split, context);

        // get dimensionLengths from hadoop conf
        try {
            initDimensionLengthsFromHadoopConf();
        } catch (DimensionLengthsNotSetException e) {
            e.printStackTrace();
            // TODO exit is not a good way
            System.exit(-1);
        }

        // get start&end from conf
        try {
            initStartAndEndFromHadoopConf();
        } catch (StartOrEndNotSetException e) {
            e.printStackTrace();
            // TODO exit is not a good way
            System.exit(-1);
        }

        // check whether any problem with the process of getting the start&end
        if (startPointForElement == null || endPointForElement == null) {
            // TODO it's good to Debug but definitely not nice codes
            try {
                throw new CubeException(
                        "problem with the process of getting start&end from conf");
            } catch (CubeException e) {
                e.printStackTrace();
                // TODO exit is not a good way
                System.exit(-1);
            }
        }
    }