我正在尝试在使用spark时获得特定获胜拍卖时间周围的拍卖列表的过滤列表。
中标拍卖RDD和完整拍卖DD由案例类组成,格式为:
case class auction(id: String, prodID: String, timestamp: Long)
我想过滤拍卖在10秒内拍卖的完整拍卖RDD,在相同的产品ID上,并收到满足这些的RDD。
我试图像这样过滤它:
val specificmessages = winningauction.map(it =>
allauctions.filter( x =>
x.timestamp > it.timestamp - 10 &&
x.timestamp < it.timestamp + 10 &&
x.productID == it.productID
)
)
有没有办法执行此操作,因为无法进行嵌套转换?
还有另一个答案,但这主要涉及嵌套地图SPARK-5603 nested map funcitons
答案 0 :(得分:5)
尝试查看cartesian方法以构建新的RDD并将过滤器应用于其中
val specificmessages = allauctions.cartesian(winningauction)
.filter( (x, y) => x.timestamp > y.timestamp - 10 &&
x.timestamp < y.timestamp + 10 &&
x.productID == y.productID )