Migra desde versiones anteriores de HBase
El cliente de HBase de Cloud Bigtable para Java se orienta a las versiones 1.x y 2.x de la API de Apache HBase. La versión 1.0 de la API contenía algunos cambios considerables respecto a las versiones anteriores de HBase. Si migras a Bigtable desde HBase y tu aplicación se orienta a versiones más antiguas de la API de HBase, deberás actualizar tu aplicación a fin de que sea compatible con Bigtable.
Para ayudarte con la migración, en esta página, se resumen los cambios más destacados en la API de HBase 1.0.
Interfaz de conexión
En HBase 1.0 y versiones posteriores, debes usar org.apache.hadoop.hbase.client.ConnectionFactory
en lugar de la interfaz de HConnection
obsoleta.
Esta clase crea objetos que implementan la interfaz de Connection
nueva. ConnectionFactory
reemplaza las clases obsoletas ConnectionManager
y HConnectionManager
.
Crear un objeto Connection
es una operación relativamente costosa. Debes crear un objeto Connection
por proceso y compartirlo según sea necesario.
Los objetos Connection
son seguros para los subprocesos.
Además, asegúrate de cerrar la conexión cuando termines de usarla. En HBase 1.0 y versiones posteriores, la aplicación tiene la responsabilidad de administrar el ciclo de vida de la conexión.
Tu código actualizado debería ser similar al siguiente ejemplo:
Connection connection = ConnectionFactory.createConnection(config);
// ...
connection.close();
Clase TableName
En versiones anteriores de HBase, cuando manipulabas una tabla, podías especificar su nombre como un valor String
o byte[]
. En HBase 1.0 y versiones posteriores, debes especificar el nombre de la tabla mediante la creación de una instancia de org.apache.hadoop.hbase.TableName
:
String tableName = "MyTable";
// or byte[] tableName = Bytes.toBytes("MyTable");
TableName tableNameObj = TableName.valueOf(tableName);
Interfaces de Table, BufferedMutator y RegionLocator
En HBase 1.0, la clase HTable
se reemplaza por las siguientes interfaces:
org.apache.hadoop.hbase.client.Table
: Te permite trabajar con datos en una sola tabla.org.apache.hadoop.hbase.client.BufferedMutator
: Te permite realizar escrituras asíncronas por lotes en una tabla. Usa esta clase en lugar de llamar al métodosetAutoFlush(boolean)
enHTableInterface
.org.apache.hadoop.hbase.client.RegionLocator
: Proporciona acceso a la información sobre las regiones de una tabla.
Usa un objeto Connection
para obtener una instancia de estas interfaces:
Table table = connection.getTable(tableNameObj);
BufferedMutator mutator = connection.getBufferedMutator(tableNameObj);
RegionLocator regionLocator = connection.getRegionLocator(tableNameObj);
Las instancias de Table
, BufferedMutator
y RegionLocator
no son seguras para los subprocesos. Sin embargo, estos objetos son livianos, por lo que puedes crear todos los que necesites en el contexto de un solo subproceso.
Interfaz de administrador
En HBase 1.0, la clase HBaseAdmin
se reemplaza por la interfaz de org.apache.hadoop.hbase.client.Admin
. Debido a que Bigtable maneja las tareas de mantenimiento de forma automática, muchos de los métodos de la interfaz de Admin
no son compatibles. Si deseas obtener más detalles, consulta Diferencias entre las API de HBase y Bigtable.
Usa un objeto Connection
para obtener una instancia de la interfaz de Admin
:
Admin admin = connection.getAdmin();