def createTable()

in spark/hbase-spark/src/main/scala/org/apache/hadoop/hbase/spark/DefaultSource.scala [152:188]


  def createTable() {
    val numReg = parameters.get(HBaseTableCatalog.newTable).map(x => x.toInt).getOrElse(0)
    val startKey =  Bytes.toBytes(
      parameters.get(HBaseTableCatalog.regionStart)
        .getOrElse(HBaseTableCatalog.defaultRegionStart))
    val endKey = Bytes.toBytes(
      parameters.get(HBaseTableCatalog.regionEnd)
        .getOrElse(HBaseTableCatalog.defaultRegionEnd))
    if (numReg > 3) {
      val tName = TableName.valueOf(tableName)
      val cfs = catalog.getColumnFamilies

      val connection = HBaseConnectionCache.getConnection(hbaseConf)
      // Initialize hBase table if necessary
      val admin = connection.getAdmin
      try {
        if (!admin.tableExists(tName)) {
          val tableDesc = new HTableDescriptor(tName)
          cfs.foreach { x =>
            val cf = new HColumnDescriptor(x.getBytes())
            logDebug(s"add family $x to ${tableName}")
            tableDesc.addFamily(cf)
          }
          val splitKeys = Bytes.split(startKey, endKey, numReg);
          admin.createTable(tableDesc, splitKeys)

        }
      }finally {
        admin.close()
        connection.close()
      }
    } else {
      logInfo(
        s"""${HBaseTableCatalog.newTable}
           |is not defined or no larger than 3, skip the create table""".stripMargin)
    }
  }