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) 
           } 
         }) 
       } 

В коде лестницу выше row key является val thePut = new Put(Bytes.toBytes(3)). По какой-то причине, когда я сохраняю его до HBase, он сохраняет ключ строки как \x00\x00\x00\x03 вместо целого 3.Row Key Being отображается как ` x00 x00 x00 x03`, а не целое

Я делаю что-то неправильно здесь: val thePut = new Put(Bytes.toBytes(3))? Поскольку все в HBase является массивом байтов, поэтому я преобразовал целое число 3 в байт в приведенном выше коде.

+0

Название, похоже, не имеет никакого отношения к вопросу? –

+0

@ TheArchetypalPaul Хорошо, я изменил название. Извини за это. Вы случайно не знаете, в чем проблема? – CapturedTree

+0

Не знаю, извините. Я бы сказал, что он записывает двоичное представление 32-битного целого числа, хотя –

ответ

0

Я смог зафиксировать его в оболочке hbase. Мне просто нужно было сделать deleteall 'TABLE_NAME', "\x00\x00\x00\x03" Использование двойных кавычек, окружающих \x00\x00\x00\x03 (\x00\x00\x00\x03 было моим ключом строки), сохраняет исходный тип данных этой строки (это 32-разрядное представление целого числа 3). Поэтому, чтобы удалить эту целую строку, используйте deleteall и для сохранения типа данных ключа строки используйте "".

Смежные вопросы