code: @Override
      public Partition[] getPartitions(S config) {
  
          cassandraJobConfig = initConfig(config, cassandraJobConfig);
  
          List<DeepTokenRange> underlyingInputSplits = null;
          if(isFilterdByKey(cassandraJobConfig.getFilters(), cassandraJobConfig.fetchTableMetadata().getPartitionKey()
                  .get(0).getName())) {
  
              underlyingInputSplits = new ArrayList<>();
              underlyingInputSplits.add(new DeepTokenRange(Long.MIN_VALUE, Long.MAX_VALUE, cassandraJobConfig.getHostList()));
          }else{
  
              if (cassandraJobConfig.isBisectModeSet()) {
                  underlyingInputSplits = RangeUtils.getSplits(cassandraJobConfig);
              } else {
                  underlyingInputSplits = ThriftRangeUtils.build(cassandraJobConfig).getSplits();
              }
          }
              Partition[] partitions = new DeepPartition[underlyingInputSplits.size()];
  
              int i = 0;
  
              for (DeepTokenRange split : underlyingInputSplits) {
                  partitions[i] = new DeepPartition(cassandraJobConfig.getRddId(), i, split);
  //                log().debug("Detected partition: " + partitions[i]);
                  ++i;
              }
  
              return partitions;
  
      }
docs: Returns the partitions on which this RDD depends on.
  <p/>
  Uses the underlying CqlPagingInputFormat in order to retrieve the splits.
  <p/>
  The number of splits, and hence the number of partitions equals to the number of tokens configured in
  cassandra.yaml + 1.