Ich habe eine Reihe Schlüssel, wie dieseHbase byteArray nach Long
Put put = new Put(Bytes.toBytes(tweets.getContact_Unique_Id()+"^"+Bytes.toBytes(epoch)));
wird erstellt Wo Epoche der langen Zeitstempel ist.
Nun, wenn ich scannen erhalte ich eine Zeile als
3857^[B @ 7c8f4424
Nun wünsche ich den Teil von RowKey dh Long
umwandeln [ B @ 7c8f4424
Wie erreiche ich das?
EDIT -> Wenn ich die Put als
Put setzen = new Put (Bytes.toBytes (tweets.getContact_Unique_Id() + "^" + Epoche);
Nicht werden alle Zeilen eingefügt, aber wenn ich
Put setzen = new put (Bytes.toBytes (tweets.getContact_Unique_Id() + "^" + Bytes.toBytes (Epoche)));
Alle Zeilen werden eingefügt, bitte beachten Sie, dass alle Zeitwerte unterschiedlich sind.
Außerdem habe ich "^" verwendet, um den ersten und zweiten Teil des Zeilenschlüssels zu trennen.
Dank
zu bearbeiten: was es bedeutet, "nicht alle Zeilen eingefügt werden"? Ausnahmen beim Schreiben? nichts, um Zeile für Zeile zu bekommen? Haben Sie überprüft, dass alle Schlüssel eindeutig sind? –
Ja alle Zeilen sollten eindeutig sein, da es verschiedene Zeitstempel gibt, es gibt keine Ausnahmen, ich habe auch System.currentTimeMillis(); und dann die Epoche jedes Mal vor dem Einfügen inkrementieren, aber mit dem Put put = new Put (Bytes.toBytes (Tweets.getContact_Unique_Id() + "^" + Epoche); , nicht alle Reihen sind irgendwie einzigartig, aber der Put, den ich in meiner Frage verwendet habe, funktioniert es, aber jetzt kann ich den ursprünglichen langen Zeitstempel nicht abrufen –
schnelle Lösung: byte [] epoBytes = Bytes.toBytes (epoch); Setzen Sie put = new Put (Bytes.add (Bytes.toBytes (tweets.getContact_Unique_Id() + "^" + epoBytes), epoBytes)); die bessere Lösung ist es, genauer mit der aktuellen Zeit umzugehen. Ich habe keinen vollständigen Code, daher kann ich Ihnen keinen genaueren Rat geben. –