def generateSchemaMappingMap()

in spark/hbase-spark/src/main/scala/org/apache/hadoop/hbase/spark/datasources/HBaseTableCatalog.scala [352:393]


  def generateSchemaMappingMap(
      schemaMappingString: String): java.util.HashMap[String, SchemaQualifierDefinition] = {
    println(schemaMappingString)
    try {
      val columnDefinitions = schemaMappingString.split(',')
      val resultingMap = new java.util.HashMap[String, SchemaQualifierDefinition]()
      columnDefinitions.map(
        cd => {
          val parts = cd.trim.split(' ')

          // Make sure we get three parts
          // <ColumnName> <ColumnType> <ColumnFamily:Qualifier>
          if (parts.length == 3) {
            val hbaseDefinitionParts = if (parts(2).charAt(0) == ':') {
              Array[String]("rowkey", parts(0))
            } else {
              parts(2).split(':')
            }
            resultingMap.put(
              parts(0),
              new SchemaQualifierDefinition(
                parts(0),
                parts(1),
                hbaseDefinitionParts(0),
                hbaseDefinitionParts(1)))
          } else {
            throw new IllegalArgumentException(
              "Invalid value for schema mapping '" + cd +
                "' should be '<columnName> <columnType> <columnFamily>:<qualifier>' " +
                "for columns and '<columnName> <columnType> :<qualifier>' for rowKeys")
          }
        })
      resultingMap
    } catch {
      case e: Exception =>
        throw new IllegalArgumentException(
          "Invalid value for " + SCHEMA_COLUMNS_MAPPING_KEY +
            " '" +
            schemaMappingString + "'",
          e)
    }
  }