我有一個類Dimensions(Int,Int,Int)和一個Shape(String name),放入一個Tuple(Shape,Dimensions)
我的資料集是:
(Cube, Dimensions(5,5,5))
(Sphere, Dimensions(5,10,15))
(Cube, Dimensions(3,3,3))
我需要回傳這個:
(Cube, Dimensions(8,8,8))
(Sphere, Dimensions(5,10,15))
我按形狀名稱分組,然后總結所有尺寸值。目前我能夠映射到 (Name, Int, Int, Int) 但我不確定如何將其包裝回 Dimension 物件。
data.map(_._2.map(x => (x.length,x.width,x.height)))
任何幫助,將不勝感激
uj5u.com熱心網友回復:
假設沒有非常具體的特殊情況并且您有一個 RDD。你只需要一個aggregateByKey.
case class Dimensions(i1: Int, i2: Int, i3: Int)
val initialRdd: RDD[(Shape, Dimensions)] = ???
def combineDimensions(dimensions1: Dimensions, dimensions2: Dimensions): Dimensions =
Dimensions(
dimensions1.i1 dimensions2.i1,
dimensions1.i2 dimensions2.i2,
dimensions1.i3 dimensions2.i3
)
val finalRdd: RDD[(Shape, Dimensions)] =
initialRdd
.aggregateByKey(Dimensions(0, 0, 0))(
{ case (accDimensions, dimensions) =>
combineDimensions(accDimensions, dimensions)
},
{ case (partitionDimensions1, partitionDimensions2) =>
combineDimensions(partitionDimensions1, partitionDimensions1)
}
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/515723.html
標籤:斯卡拉阿帕奇火花
上一篇:減少后如何保持屬性?
下一篇:如何向我的元組添加排名數字?
