Spark嵌套转换SPARK-5063

ebo*_*oni 2 scala apache-spark rdd

我正在尝试在使用spark时获得特定获胜拍卖时间周围的拍卖列表的过滤列表.获胜拍卖RDD和完整拍卖DD由案例类组成,格式如下:
case class auction(id: String, prodID: String, timestamp: Long)

我想在相同的产品ID上过滤在中奖拍卖的10秒内拍卖的完整拍卖RDD,并获得充满这些的RDD.

我试图像这样过滤它:

val specificmessages = winningauction.map(it =>
  allauctions.filter( x =>
    x.timestamp > it.timestamp - 10 &&
    x.timestamp < it.timestamp + 10 &&
    x.productID == it.productID
  )
)
Run Code Online (Sandbox Code Playgroud)

有没有办法执行此操作,因为嵌套转换是不可能的?

还有另一个答案,但这主要涉及嵌套地图SPARK-5603嵌套地图功能

cch*_*son 5

尝试查看笛卡尔方法来构建新的RDD并将过滤器应用于它

val specificmessages = allauctions.cartesian(winningauction)
                                  .filter( (x, y) => x.timestamp > y.timestamp - 10 && 
                                               x.timestamp < y.timestamp + 10 && 
                                               x.productID == y.productID )
Run Code Online (Sandbox Code Playgroud)