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 :
org.apache.hadoop.hbase.client.Table
: vous permet de travailler avec des données dans une seule table.org.apache.hadoop.hbase.client.BufferedMutator
: permet d'effectuer des écritures par lots asynchrones dans une table. Utilisez cette classe au lieu d'appeler la méthodesetAutoFlush(boolean)
dansHTableInterface
.org.apache.hadoop.hbase.client.RegionLocator
: fournit un accès aux informations relatives aux régions d'une table.
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();