Migrer à partir de versions HBase antérieures

Le client Cloud Bigtable HBase pour Java cible les versions 1.x et 2.x de l'API Apache HBase. La version 1.0 de l'API incluait quelques modifications notables par rapport aux versions précédentes de HBase. Si vous migrez vers Bigtable à partir de HBase et que votre application cible une version plus ancienne de l'API HBase, vous devez mettre à jour votre application pour qu'elle soit compatible avec Bigtable.

Pour vous aider dans votre migration, cette page récapitule les modifications les plus importantes de l'API HBase 1.0.

Interface de connexion

Dans HBase 1.0 et versions ultérieures, plutôt que d'utiliser l'interface HConnection qui est obsolète, privilégiez org.apache.hadoop.hbase.client.ConnectionFactory. Cette classe crée des objets qui mettent en œuvre la nouvelle interface Connection. ConnectionFactory remplace les classes obsolètes ConnectionManager et HConnectionManager.

La création d'un objet Connection est une opération relativement coûteuse. Nous vous recommandons de créer un objet Connection par processus et de partager cet objet en fonction des besoins. Les objets Connection sont sécurisés.

Assurez-vous par ailleurs de fermer la connexion une fois que vous avez fini de l'utiliser. Dans HBase 1.0 et versions ultérieures, il incombe à l'application de gérer le cycle de vie de la connexion.

Votre code mis à jour doit se présenter comme dans l'exemple suivant :

Connection connection = ConnectionFactory.createConnection(config);
// ...
connection.close();

Classe TableName

Dans les versions précédentes de HBase, lorsque vous manipuliez une table, vous pouviez spécifier le nom de la table sous la forme d'une valeur String ou byte[]. Dans HBase 1.0 et versions ultérieures, vous devez spécifier le nom de la table en créant une instance de org.apache.hadoop.hbase.TableName :

String tableName = "MyTable";
    // or byte[] tableName = Bytes.toBytes("MyTable");
TableName tableNameObj = TableName.valueOf(tableName);

Interfaces Table, BufferedMutator et RegionLocator

Dans HBase 1.0, la classe HTable est remplacée par les interfaces suivantes :

Utilisez un objet Connection pour obtenir une instance de ces interfaces :

Table table = connection.getTable(tableNameObj);
BufferedMutator mutator = connection.getBufferedMutator(tableNameObj);
RegionLocator regionLocator = connection.getRegionLocator(tableNameObj);

Les instances de Table, BufferedMutator et RegionLocator ne sont pas sécurisées. Cependant, s'agissant d'objets légers, vous pouvez les créer selon vos besoins dans le contexte d'un thread unique.

Interface d'administration

Dans HBase 1.0, la classe HBaseAdmin est remplacée par l'interface org.apache.hadoop.hbase.client.Admin. Étant donné que Bigtable gère automatiquement les tâches de maintenance, de nombreuses méthodes de l'interface Admin ne sont pas compatibles. Pour en savoir plus, consultez la section Différences entre les API HBase et Bigtable.

Utilisez un objet Connection pour obtenir une instance de l'interface Admin :

Admin admin = connection.getAdmin();