Sample code to connect to HBase data connector
Sample application code for connecting to a HBase data connector in Cloudera Data Engineering.
The following sample application code includes table creation, data insertion, and retrieval
in the Cloudera Base on premises
cluster:
import org.apache.hadoop.hbase.HBaseConfiguration
import org.apache.hadoop.hbase.TableName
import org.apache.hadoop.hbase.client._
import org.apache.hadoop.hbase.util.Bytes
import org.apache.hadoop.hbase.HColumnDescriptor
import org.apache.hadoop.hbase.HTableDescriptor
import scala.collection.JavaConverters._
object HbaseTable {
def main(args: Array[String]): Unit = {
createHbaseTable()
}
private def createHbaseTable[T](): Unit = {
val table = TableName.valueOf("hbase_table")
val column = "column"
val value = Bytes.toBytes("value")
val conf = HBaseConfiguration.create()
val conn = ConnectionFactory.createConnection(conf)
val admin = conn.getAdmin()
if (!admin.tableExists(table)) {
val tableDescriptor = new HTableDescriptor(table)
tableDescriptor.addFamily(new HColumnDescriptor(column))
admin.createTable(tableDescriptor)
}
val hTable = conn.getTable(table)
val puts = (0 until 10)
.map(i => new Put(Bytes.toBytes("row" + i) ).addColumn(Bytes.toBytes(column), value, Bytes.toBytes(i.toString)))
.asJava
hTable.put(puts)
val gets = (0 until 10)
.map(i => new Get(Bytes.toBytes("row" + i) ) )
.asJava
val result = hTable.get(gets)
result.zipWithIndex.foreach { case(row, idx) =>
if(!result.isEmpty) {
val k = Bytes.toString(row.getRow)
val v = Bytes.toString(row.getValue(Bytes.toBytes(column), value) )
println(s"Record $idx: $k = $v")
}
}
hTable.close()
admin.close()
conn.close()
}
}