2016-06-29 2 views
0
lines.foreachRDD{rdd => 
         val temp = rdd.map(_._2) 
         temp.collect().foreach(a => { 
           if (a == "Insurance:dental") { 
             val thePut = new Put(Bytes.toBytes(3)) 
             thePut.add(Bytes.toBytes("insurance"), Bytes.toBytes("dental"), Bytes.toBytes("metlife")) 
             table.put(thePut) 
           } 
         }) 
       } 

Im scala-Code über die row keyval thePut = new Put(Bytes.toBytes(3)) ist. Aus irgendeinem Grund, wenn ich es auf HBase speichern speichert es den Zeilenschlüssel wie \x00\x00\x00\x03 anstelle der Ganzzahl 3.Row Key Being angezeigt, wie ` x00 x00 x00 x03` statt integer

Mache ich hier etwas falsch: val thePut = new Put(Bytes.toBytes(3))? Da alles in HBase ein Byte-Array ist, habe ich im obigen Code die Ganzzahl 3 in ein Byte umgewandelt.

+0

Der Titel scheint nichts mit der Frage zu tun zu haben? –

+0

@TheArchetypalPaul Ok Ich habe den Titel geändert. Das tut mir leid. Weißt du zufällig was das Problem ist? – CapturedTree

+0

Keine Ahnung, sorry. Ich würde klar sagen, dass es die binäre Darstellung einer 32-Bit-Ganzzahl ausgibt, obwohl –

Antwort

0

Ich konnte es in der HBase Shell selbst beheben. Ich musste nur tun deleteall 'TABLE_NAME', "\x00\x00\x00\x03" Mit den doppelten Anführungszeichen rund um die \x00\x00\x00\x03 (\x00\x00\x00\x03 war mein Zeilenschlüssel) behält den ursprünglichen Datentyp dieses Zeilenschlüssels (die eine 32-Bit-Darstellung der Ganzzahl 3 ist). Um also die gesamte Zeile zu löschen, verwenden Sie deleteall. Um den Zeilenschlüssel-Datentyp beizubehalten, verwenden Sie "".

Verwandte Themen