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:

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();