Migre de versões anteriores do HBase
O cliente HBase do Cloud Bigtable para Java segmenta as versões 1.x e 2.x da API Apache HBase. A versão 1.0 da API incluía algumas alterações notáveis em relação às versões anteriores do HBase. Se estiver a migrar para o Bigtable a partir do HBase e a sua aplicação segmentar uma versão mais antiga da API HBase, tem de atualizar a aplicação para a tornar compatível com o Bigtable.
Para ajudar na migração, esta página resume as alterações mais notáveis na API HBase 1.0.
Interface de ligação
No HBase 1.0 e posterior, em vez de depender da interface HConnection
descontinuada, deve usar org.apache.hadoop.hbase.client.ConnectionFactory
.
Esta classe cria objetos que implementam a nova interface Connection
. ConnectionFactory
substitui as classes ConnectionManager
e HConnectionManager
descontinuadas.
A criação de um objeto Connection
é uma operação relativamente dispendiosa. Deve criar um objeto Connection
por processo e partilhar o objeto conforme necessário.
Os objetos Connection
são seguros para threads.
Além disso, certifique-se de que fecha a ligação quando terminar de a usar. No HBase 1.0 e posterior, é da responsabilidade da aplicação gerir o ciclo de vida da ligação.
O código atualizado deve ser semelhante ao seguinte exemplo:
Connection connection = ConnectionFactory.createConnection(config);
// ...
connection.close();
Classe TableName
Nas versões anteriores do HBase, quando manipulava uma tabela, podia especificar o nome da tabela como um valor String
ou byte[]
. No HBase 1.0 e posterior, tem de especificar 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:
org.apache.hadoop.hbase.client.Table
: permite-lhe trabalhar com dados numa única tabela.org.apache.hadoop.hbase.client.BufferedMutator
: Permite-lhe executar escritas em lote assíncronas numa tabela. Use esta classe em vez de chamar o métodosetAutoFlush(boolean)
emHTableInterface
.org.apache.hadoop.hbase.client.RegionLocator
: Fornece acesso a informações sobre as regiões de uma tabela.
Use um objeto Connection
para obter uma instância destas interfaces:
Table table = connection.getTable(tableNameObj);
BufferedMutator mutator = connection.getBufferedMutator(tableNameObj);
RegionLocator regionLocator = connection.getRegionLocator(tableNameObj);
As instâncias de Table
, BufferedMutator
e RegionLocator
não são seguras para vários threads. No entanto, estes são objetos simples, pelo que pode criá-los conforme necessário no contexto de uma única discussão.
Interface de administração
No HBase 1.0, a classe HBaseAdmin
é substituída pela interface org.apache.hadoop.hbase.client.Admin
. Uma vez que o Bigtable processa as tarefas de manutenção automaticamente, muitos dos métodos na interface Admin
não são suportados. Consulte o artigo Diferenças entre as APIs HBase e Bigtable para ver detalhes.
Use um objeto Connection
para obter uma instância da interface Admin
:
Admin admin = connection.getAdmin();