Migrar 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 inclui algumas alterações notáveis em relação a versões anteriores do HBase. Se você estiver migrando para o Bigtable pelo HBase e o aplicativo segmentar uma versão mais antiga da API HBase, será necessário atualizar o aplicativo para torná-lo compatível com o Bigtable.
Para ajudar na migração, esta página resume as alterações mais notáveis na HBase 1.0 API.
Interface de conexão
No HBase 1.0 e versões posteriores, em vez de usar a interface HConnection
obsoleta, use 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. Crie um objeto Connection
por processo e compartilhe-o conforme necessário.
Os objetos Connection
são seguros para linha de execução.
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
Nas versões anteriores do HBase, quando você manipulava uma tabela, era possível especificar o nome da tabela como um valor String
ou byte[]
. No HBase 1.0 e versões posteriores, 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:
org.apache.hadoop.hbase.client.Table
: permite trabalhar com dados em uma única tabela.org.apache.hadoop.hbase.client.BufferedMutator
: permite realizar gravações em lote assíncronas em uma tabela. Use essa 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 receber uma instância dessas 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 linha de execução. No entanto, são objetos leves, para que você possa criá-los conforme necessário no contexto de um único thread.
Interface Admin
No HBase 1.0, a classe HBaseAdmin
é substituída pela interface org.apache.hadoop.hbase.client.Admin
. Como
o Bigtable processa tarefas de manutenção automaticamente, muitos dos
métodos na interface Admin
não são compatíveis. Veja os detalhes em
Diferenças entre a API HBase e as APIs Bigtable.
Use um objeto Connection
para receber uma instância da interface Admin
:
Admin admin = connection.getAdmin();