Translate
domingo, 7 de octubre de 2018
Insertar datos en Apache HBase con Scala y Scalatra
Vamos hacer un ejemplo de una API Rest con scalatra que inserte datos en HBase.
Primero hacemos un proyecto en scalatra como ya hemos explicado:
https://emanuelpeg.blogspot.com/2018/08/haciendo-un-proyecto-con-scalatra.html
Luego agregamos las dependencias de hbase, en el archivo build.sbt agregando :
libraryDependencies ++= Seq(
"org.apache.hbase" % "hbase-common" % "2.1.0" ,
"org.apache.hbase" % "hbase-client" % "2.1.0"
)
Luego en la clase de ejemplo generamos el método get que inserta datos en la base hbase :
get(s"/guardar/:rowKey/:str") {
val conf : Configuration = HBaseConfiguration.create()
// Se debe agregar en el archivo host el nombre de la base
conf.set("hbase.zookeeper.quorum", "mybase")
conf.set("hbase.zookeeper.property.clientPort", "2181")
// seteamos los puertos de hbase.
conf.set("hbase.master.port", "60000")
conf.set("hbase.master.info.port", "60010")
conf.set("hbase.regionserver.info.port", "60030")
conf.set("hbase.regionserver.port", "60020")
// cree la tabla
// create 'TableTest', 'info'
// put 'TableTest', 'rowkey1', 'info:test', 'ejemplo'
val connection = ConnectionFactory.createConnection(conf)
val table = connection.getTable(TableName.valueOf( "TableTest" ) )
// Put example
val put = new Put(Bytes.toBytes(params("rowKey")))
put.addColumn(Bytes.toBytes("info"), Bytes.toBytes("test"), Bytes.toBytes(params("str")))
table.put(put)
Ok("ok")
}
}
El método inserta los datos pasados por parámetro en la URL. Donde pasamos una key y un dato. De esta manera insertamos datos en una tabla TableTest.
Algo importante que se puede ver es que seteo los puestos dado que en las ultimas versiones cambiaron de 600X0 a 160X0. Depende de la versión de Hbase, hay que usar uno u otro, yo estoy usando HBase de la maquina virtual de cloudera.
Y Listo!!