【发布时间】:2019-02-05 05:46:35
【问题描述】:
首先我有一个salesList: List[Sale],为了获得列表中最后一个销售的ID,我使用了lastOption:
val lastSaleId: Option[Any] = salesList.lastOption.map(_.saleId)
但是现在我已经修改了一个使用List[Sale] 的方法来使用salesListRdd: List[RDD[Sale]]。所以我改变了获取上次销售 ID 的方式:
val lastSaleId: Option[Any] = SparkContext
.union(salesListRdd)
.collect().toList
.lastOption.map(_.saleId)
我不确定这是不是最好的方法。因为这里我仍然在将 RDD 收集到一个 List 中,然后将它带到驱动程序节点,这可能会导致驱动程序内存不足。
有没有办法从保留记录的初始顺序的 RDD 中获取最后一次销售的 ID?不是任何排序,而是 Sale 对象最初存储在 List 中的方式?
【问题讨论】:
-
我们有takeRight(1)?在 RDD 上对吗?
-
@RamanMishra 如提到的here
rdd is distributed and there is no way to tell which one is the last string without collecting it to one node
标签: scala apache-spark rdd