2016-11-20 17 views
2

Ich bin neu bei Hbase. Brauchen Sie Hilfe, Ich habe eine Tabelle mit einigen Daten in Hbase.Hbase: Automatisches Inkrementieren der Spalte

und Id sollte automatisch inkrementieren. Jetzt muss ich Daten in die Tabelle einfügen, wie wenn wir Einsatz 10 zeichnet die Id-12 wie

erhöhen sollte
Id Name Address 
1 john XX-XX 
2 mike XXX-XX 
3 foo XXXX 
... 
... 
12 booo xxx 

Mai werden in Hbase von Sequenzgenerator denken. Kann mir jemand mit Code helfen.

+0

arbeiten Sie in der Shell oder in Java-Code? –

+0

Java-Code. Können wir mit dem Zählerkonzept in HBase umgehen? Wenn ja, wie können wir es tun? – vikv

+0

Lesen Sie über Rowkeys und ihre Verteilung über die Regionsserver und wie schlecht die sequentiellen Rowkeys Hotspotting von Regionen usw. in Erwägung ziehen würden. Sie können einen sequentiellen Wert für eine Spaltenfamilie mit einer beliebigen Programmiersprache mit hbase-Treibern usw. erstellen. Lesen Sie auch dies Antwort hier und die Frage kann ein Duplikat davon sein - http://stackoverflow.com/questions/26890944/hbase-auto-increment-any-column-row-key –

Antwort

2

HBase hat keine Sequenzgeneratoren. Und wie Sergey bemerkt, wird die Verwendung einer Sequenz als Zeilenschlüssel nicht empfohlen. Wenn man sich mit einem solchen Bedürfnis konfrontiert sieht, sollte es sorgfältig analysiert werden. Wenn Sie solche benötigen, wird eine salted key approach empfohlen.

HBase unterstützt globale Zähler (increment actions), die zum Generieren von Sequenzen verwendet werden können. Diese können jedoch nicht atomisiert verwendet werden, um den Schlüsselwert für eine Zeile zu generieren, die hinzugefügt wird (Sie müssen den Wert erhöhen und abrufen und dann die neue Zeile einfügen). So können Sie Lücken bekommen, wenn der nachfolgende Put fehlschlägt und Sie 2 RPCs haben.

Wenn wir Zähler auf diese Weise verwenden, verwenden wir gesalzene Schlüssel, akzeptieren, dass Lücken auftreten können, und erhöhen sie um Blöcke, um einen RPC für jeden benötigten Schlüssel zu vermeiden.

+0

Was ist mit Zählern: https: //cloudfront.blogspot. fr/2012/06/hbase-counters-part-i.html? –

+0

Ja, man könnte einen Zähler verwenden, aber dies führt immer noch zu einer schlechten Schlüsselverteilung und bedeutet, dass Sie ein 2-Pass-Update haben (eins, um die Sequenz-ID zu erhalten), was ein Performance-Hit ist und eine mögliche Lücke in Schlüsseln hinterlässt verwendet (was nicht wichtig sein kann), wenn die zweite Aktualisierung fehlschlägt. –

+0

Ich stimme zu, es ist eine schlechte Schlüsselverteilung. Trotzdem bedeutet das, dass HBase Sequenzgeneratoren hat, vielleicht wurde das nach Ihrer ursprünglichen Antwort hinzugefügt? –

Verwandte Themen