Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Migrazione dalle versioni HBase precedenti

Il client Cloud Bigtable HBase per Java sceglie 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, devi aggiornare l'applicazione per renderla compatibile con Bigtable.

Per facilitare la migrazione, questa pagina riassume le modifiche più importanti nell'API HBase 1.0.

Interfaccia di connessione

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

La creazione di un oggetto Connection è un'operazione relativamente costosa. Devi creare un oggetto Connection per ciascun processo e condividerlo a seconda delle esigenze. Connection oggetti sono sicuri per i thread.

Inoltre, assicurati di chiudere la connessione una volta terminata l'utilizzo. 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 venivano manipolate 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 di Table, BufferedMutator e RegionLocator

In HBase 1.0, la classe HTable è 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, che possono quindi essere creati in base alle esigenze all'interno di un singolo thread.

Interfaccia di amministrazione

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 nell'interfaccia di Admin non sono supportati. Per i dettagli, consulta Differenze tra le API HBase e Bigtable.

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

Admin admin = connection.getAdmin();