Migrazione dalle versioni HBase precedenti

Il client Cloud Bigtable HBase per Java ha come target le versioni 1.x e 2.x dell'API Apache HBase. La versione 1.0 dell'API includeva alcune modifiche significative rispetto alle versioni precedenti di HBase. Se esegui la migrazione a Bigtable da HBase e la tua applicazione ha come target una versione precedente dell'API HBase, dovrai aggiornarla per renderla compatibile con Bigtable.

Per aiutarti con la migrazione, questa pagina riassume le modifiche più significative nell'API HBase 1.0.

Interfaccia di connessione

In HBase 1.0 e versioni successive, anziché fare affidamento sull'interfaccia HConnection deprecata, devi utilizzare org.apache.hadoop.hbase.client.ConnectionFactory. Questa classe crea oggetti che implementano la nuova Connection interfaccia. ConnectionFactory sostituisce le classi ConnectionManager e HConnectionManager deprecate.

La creazione di un oggetto Connection è un'operazione relativamente costosa. Devi creare un oggetto Connection per processo e condividerlo in base alle esigenze. Gli oggetti Connection sono thread-safe.

Inoltre, assicurati di chiudere la connessione quando hai finito di utilizzarla. In HBase 1.0 e versioni successive, è responsabilità dell'applicazione gestire il ciclo di vita della connessione.

Il codice aggiornato dovrebbe essere simile al seguente esempio:

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

Classe TableName

Nelle versioni precedenti di HBase, quando manipollavi una tabella, potevi specificare il nome della tabella come valore String o byte[]. In HBase 1.0 e versioni successive, devi specificare il nome della tabella creando un'istanza di org.apache.hadoop.hbase.TableName:

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

Interfacce Table, BufferedMutator e RegionLocator

In HBase 1.0, la classe HTable viene sostituita dalle seguenti interfacce:

Utilizza un oggetto Connection per ottenere un'istanza di queste interfacce:

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

Le istanze di Table, BufferedMutator e RegionLocator non sono sicure per i thread. Tuttavia, si tratta di oggetti leggeri, quindi puoi crearli come necessario nel contesto di un singolo thread.

Interfaccia amministratore

In HBase 1.0, la classe HBaseAdmin viene sostituita dall'interfaccia org.apache.hadoop.hbase.client.Admin. Poiché Bigtable gestisce automaticamente le attività di manutenzione, molti dei metodi dell'interfaccia Admin non sono supportati. Per informazioni dettagliate, consulta la sezione Differenze tra le API HBase e Bigtable.

Utilizza un oggetto Connection per ottenere un'istanza dell'interfaccia Admin:

Admin admin = connection.getAdmin();