code: public void createOutputTableIfNeeded(Tuple2<Cells, Cells> first) {
  
          TableMetadata metadata = getSession()
                  .getCluster()
                  .getMetadata()
                  .getKeyspace(this.catalog)
                  .getTable(quote(this.table));
  
          if (metadata == null && !createTableOnWrite) {
              throw new DeepIOException("Cannot write RDD, output table does not exists and configuration object has " +
                      "'createTableOnWrite' = false");
          }
  
          if (metadata != null) {
              return;
          }
  
          if (first._1() == null || first._1().isEmpty()) {
              throw new DeepNoSuchFieldException("no key structure found on row metadata");
          }
          String createTableQuery = createTableQueryGenerator(first._1(), first._2(), this.catalog,
                  quote(this.table));
          getSession().execute(createTableQuery);
          waitForNewTableMetadata();
      }
docs: Creates the output column family if not exists. <br/>
  We first check if the column family exists. <br/>
  If not, we get the first element from <i>tupleRDD</i> and we use it as a template to get columns metadata.
  <p>
  This is a very heavy operation since to obtain the schema we need to get at least one element of the output RDD.
  </p>
  
  @param first the pair RDD.