从HBase批量删除记录-如何将RDD转换为Array [Byte]?

时间:2018-10-18 13:32:29

标签: scala apache-spark hbase

我有一个要从HBase批量删除的对象的RDD。阅读HBase文档和示例后,我想到了以下代码:

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

据我了解,salesObjects必须转换为Array[Byte]。 由于salesObjectsRDD[Sale],如何正确将其转换为Array[Byte]

我尝试了Bytes.toBytes(salesObjects),但是该方法不接受RDD[Sale]作为参数。 Sale是一个复杂的对象,因此将每个字段解析为字节会很成问题。
目前,我已经将RDD[Sale]转换为val salesList: List[Sale] = salesObjects.collect().toList,但目前仍在继续下一步。

1 个答案:

答案 0 :(得分:1)

我从未使用过这种方法,但会尽力提供帮助:

据我了解,bulkDelete方法将累积batchSize个Delete对象并将它们立即发送到HBase。否则,可以请您显示一些代码以更具体地了解您要执行的操作吗?

执行val salesList: List[Sale] = salesObjects.collect().toList并不是一个好主意,因为它将所有数据带入驱动程序中。可能会导致OOM问题。