Migrazione dalle versioni HBase precedenti
Il client Cloud Bigtable HBase per Java ha come target le versioni 1.x e 2.x del API Apache HBase. La versione 1.0 dell'API includeva alcune modifiche 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
obsoleta, devi utilizzare
org.apache.hadoop.hbase.client.ConnectionFactory
.
Questa classe crea oggetti che implementano il nuovo Connection
a riga di comando. ConnectionFactory
sostituisce quello deprecato
classi ConnectionManager
e HConnectionManager
.
La creazione di un oggetto Connection
è un'operazione relativamente costosa. Dovresti
crea un oggetto Connection
per processo e condividilo in base alle esigenze.
Gli oggetti Connection
sono thread-safe.
Inoltre, assicurati di chiudere la connessione quando hai finito di utilizzarla. Nella HBase 1.0 e versioni successive, è responsabilità dell'applicazione gestire 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 manipolavi 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:
org.apache.hadoop.hbase.client.Table
: ti consente di lavorare con i dati in un'unica tabella.org.apache.hadoop.hbase.client.BufferedMutator
: Consente di eseguire scritture batch asincrone su una tabella. Utilizza questo corso anziché chiamare il metodosetAutoFlush(boolean)
inHTableInterface
.org.apache.hadoop.hbase.client.RegionLocator
: Fornisce l'accesso alle informazioni sulle regioni di una tabella.
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 dalla classe
org.apache.hadoop.hbase.client.Admin
. Poiché Bigtable gestisce automaticamente le attività di manutenzione, molti dei metodi dell'interfaccia Admin
non sono supportati. Consulta le differenze tra
API HBase e Bigtable per maggiori dettagli.
Utilizza un oggetto Connection
per ottenere un'istanza dell'interfaccia Admin
:
Admin admin = connection.getAdmin();