Como migrar de versões anteriores do HBase

O cliente HBase do Cloud Bigtable para Java segmenta a API Apache HBase 1.0 e posteriores. A versão 1.0 da API inclui algumas alterações notáveis em relação a versões anteriores do HBase. Se você estiver migrando do HBase para o Cloud Bigtable e o aplicativo segmentar uma versão anterior da API HBase, será preciso atualizar o aplicativo para torná-lo compatível.

Para facilitar a migração, nesta página estão resumidas as alterações mais notáveis na API HBase 1.0.

Interface de conexão

No HBase 1.0 e superior, em vez de usar a interface obsoleta HConnection, use a org.apache.hadoop.hbase.client.ConnectionFactory. Essa classe cria objetos que implementam a nova interface Connection. ConnectionFactory substitui as classes obsoletas ConnectionManager e HConnectionManager.

Criar um objeto Connection é uma operação relativamente cara. É preciso criar um objeto Connection por processo e compartilhar o objeto conforme necessário. Os objetos Connection são thread-safe.

Além disso, feche a conexão assim que terminar de usá-la. No HBase 1.0 e em versões posteriores, é responsabilidade do aplicativo gerenciar o ciclo de vida da conexão.

O código atualizado deve ser semelhante ao seguinte exemplo:

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

Classe TableName

Em versões anteriores do HBase, quando você manipulava uma tabela, podia especificar o nome da tabela como um valor String ou byte[]. No HBase 1.0 e superior, especifique o nome da tabela criando uma instância de org.apache.hadoop.hbase.TableName:

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

Interfaces Table, BufferedMutator e RegionLocator

No HBase 1.0, a classe HTable é substituída pelas seguintes interfaces:

Use um objeto Connection para conseguir uma instância destas interfaces:

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

Instâncias de Table, BufferedMutator e RegionLocator não são thread-safe. No entanto, são objetos leves, para que você possa criá-los conforme necessário no contexto de um único thread.

Interface Admin

Na HBase 1.0, a classe HBaseAdmin foi substituída pela interface org.apache.hadoop.hbase.client.Admin. Como o Cloud Bigtable processa tarefas de manutenção automaticamente, muitos métodos da Admin não são compatíveis. Veja os detalhes em Diferenças entre as APIs do HBase e as do Cloud Bigtable.

Use um objeto Connection para conseguir uma instância da interface Admin:

Admin admin = connection.getAdmin();
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Cloud Bigtable