【问题标题】:Bulk delete records from HBase - how to convert an RDD to Array[Byte]?从 HBase 批量删除记录 - 如何将 RDD 转换为 Array[Byte]?
【发布时间】:2018-10-18 13:32:28
【问题描述】:

我有一个要从 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] 作为参数。销售是一个复杂的对象,因此将每个字段解析为字节是有问题的。
目前我已经将RDD[Sale] 转换为val salesList: List[Sale] = salesObjects.collect().toList,但目前仍坚持下一步该从哪里开始。

【问题讨论】:

    标签: scala apache-spark hbase


    【解决方案1】:

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

    在我的理解中bulkDelete 方法将累积batchSize 数量的 Delete 对象并立即将它们发送到 HBase。否则,您能否显示一些代码以更具体地了解您要做什么?

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

    【讨论】:

      猜你喜欢
      • 2019-04-04
      • 1970-01-01
      • 2020-02-28
      • 2014-07-21
      • 2014-04-18
      • 2015-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多