Von früheren HBase-Versionen migrieren
Der Cloud Bigtable-HBase-Client für Java ist auf die Versionen 1.x und 2.x der Apache HBase API ausgerichtet. Version 1.0 der API beinhaltet einige größere Änderungen gegenüber früheren Versionen von HBase. Wenn Sie von HBase zu Bigtable migrieren und Ihre Anwendung für eine ältere Version der HBase API bestimmt ist, müssen Sie die Anwendung aktualisieren, damit sie mit Bigtable kompatibel wird.
Um bei Ihrer Migration zu helfen, sind auf dieser Seite die nennenswertesten Änderungen in HBase 1.0 API zusammengefasst.
Verbindungsschnittstelle
Verwenden Sie in HBase 1.0 und neueren Versionen nicht die verworfene Schnittstelle HConnection
, sondern org.apache.hadoop.hbase.client.ConnectionFactory
.
Diese Klasse erstellt Objekte, die die neue Connection
-Schnittstelle implementieren. ConnectionFactory
ersetzt die verworfenen Klassen ConnectionManager
und HConnectionManager
.
Ein Connection
-Objekt zu erstellen ist ein relativ teurer Vorgang. Sie sollten ein Connection
-Objekt pro Vorgang erstellen und das Objekt nach Bedarf teilen.
Connection
-Objekte sind threadsicher.
Zusätzlich sollten Sie sichergehen, die Verbindung zu schließen, wenn Sie fertig sind. In HBase 1.0 und später liegt es in der Verantwortung der Anwendung, den Lebenszyklus der Verbindung zu verwalten.
Ihr aktualisierter Code sollte dem folgenden Beispiel ähnlich sein:
Connection connection = ConnectionFactory.createConnection(config);
// ...
connection.close();
Klasse TableName
In früheren Versionen von HBase konnten Sie bei der Bearbeitung einer Tabelle den Namen der Tabelle als String
- oder byte[]
-Wert angeben. In HBase 1.0 und neueren Versionen müssen Sie den Tabellennamen durch Erstellen einer Instanz von org.apache.hadoop.hbase.TableName
angeben:
String tableName = "MyTable";
// or byte[] tableName = Bytes.toBytes("MyTable");
TableName tableNameObj = TableName.valueOf(tableName);
Tabellen-, BufferedMutator- und RegionLocator-Schnittstellen
In HBase 1.0 wurde die Klasse HTable
durch die folgenden Schnittstellen ersetzt:
org.apache.hadoop.hbase.client.Table
: Ermöglicht die Arbeit mit Daten in einer einzigen Tabelle.org.apache.hadoop.hbase.client.BufferedMutator
: Ermöglicht das Ausführen asynchroner Batch-Schreibvorgänge in eine Tabelle. Verwenden Sie diese Klasse anstelle der MethodesetAutoFlush(boolean)
inHTableInterface
.org.apache.hadoop.hbase.client.RegionLocator
: Bietet Zugriff auf Informationen zu den Regionen einer Tabelle.
Verwenden Sie ein Connection
-Objekt, um eine Instanz dieser Schnittstellen abzurufen:
Table table = connection.getTable(tableNameObj);
BufferedMutator mutator = connection.getBufferedMutator(tableNameObj);
RegionLocator regionLocator = connection.getRegionLocator(tableNameObj);
Instanzen von Table
, BufferedMutator
und RegionLocator
sind nicht threadsicher. Jedoch sind diese Objekte sehr klein, sodass Sie sie, wenn nötig, im Kontext eines Threads erstellen können.
Admin-Schnittstelle
In HBase 1.0 wird die Klasse HBaseAdmin
durch die Schnittstelle org.apache.hadoop.hbase.client.Admin
ersetzt. Da Bigtable Wartungsarbeiten automatisch durchführt, werden viele der Methoden in der Admin
-Schnittstelle nicht unterstützt. Weitere Informationen finden Sie unter Unterschiede zwischen der HBase API und der Bigtable API.
Verwenden Sie ein Connection
-Objekt, um eine Instanz der Admin
-Schnittstelle abzurufen:
Admin admin = connection.getAdmin();