Массовое удаление записей из HBase - как преобразовать RDD в массив [байт]? - PullRequest
0 голосов
/ 18 октября 2018

У меня есть RDD объектов, которые я хочу массово удалить из HBase.Прочитав документацию и примеры на HBase, я получил следующий код:

hc.bulkDelete[Array[Byte]](salesObjects, TableName.valueOf("salesInfo"),
  putRecord => new Delete(putRecord), 4)

Однако, насколько я понимаю, salesObjects необходимо преобразовать в Array[Byte].Поскольку salesObjects является RDD[Sale], как правильно преобразовать его в Array[Byte]?

Я пытался Bytes.toBytes(salesObjects), но метод не принимает RDD[Sale] в качестве аргумента.Продажа - сложный объект, поэтому будет проблематично проанализировать каждое поле в байтах.
На данный момент я конвертировал RDD[Sale] в val salesList: List[Sale] = salesObjects.collect().toList, но в настоящее время застрял, куда идти дальше.

1 Ответ

0 голосов
/ 19 октября 2018

Я никогда не использовал этот метод, но я постараюсь помочь:

В моем понимании bulkDelete метод будет накапливать batchSize количество объектов Delete иотправьте их в HBase сразу, в противном случае, не могли бы вы показать какой-нибудь код, чтобы получить более конкретное представление о том, что вы пытаетесь сделать?

Выполнение val salesList: List[Sale] = salesObjects.collect().toList не очень хорошая идея, поскольку оно приносит все данныев ваш драйвер. Потенциально это может привести к проблеме ООМлемы.

...