Spark嵌套转换SPARK-5063

时间:2015-07-08 14:10:13

标签: scala apache-spark rdd

我正在尝试在使用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

1 个答案:

答案 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 )