Migrazione dalle versioni HBase precedenti
Il client HBase di Cloud Bigtable 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 stai eseguendo 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 aiutarti con la migrazione, questa pagina riassume le modifiche più importanti all'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 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 processo e condividere l'oggetto in base alle esigenze.
Connection
oggetti sono a prova di thread.
Inoltre, assicurati di chiudere la connessione quando hai finito di utilizzarlo. 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 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
è sostituita dalle seguenti interfacce:
org.apache.hadoop.hbase.client.Table
: consente di lavorare con i dati in un'unica tabella.org.apache.hadoop.hbase.client.BufferedMutator
: consente di eseguire scritture batch asincrone in una tabella. Utilizza questa classe 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
thread-safe. Tuttavia, si tratta di oggetti leggeri, quindi puoi crearli in base alle tue esigenze nel contesto 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 metodi nell'interfaccia Admin
non sono supportati. Per maggiori dettagli, vedi Differenze tra le API HBase e Bigtable.
Utilizza un oggetto Connection
per ottenere un'istanza dell'interfaccia Admin
:
Admin admin = connection.getAdmin();