【问题标题】:Spark nested transformations SPARK-5063Spark 嵌套转换 SPARK-5063
【发布时间】:2016-05-06 13:58:26
【问题描述】:

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

由于无法进行嵌套转换,有没有办法执行此操作?

还有另一个答案,但这主要处理嵌套地图SPARK-5603 nested map funcitons

【问题讨论】:

  • 尝试查看cartesian spark.apache.org/docs/latest/api/scala/… 来构建一个新的RDD并应用你的过滤器
  • 未经测试:val specificmessages = allauctions.cartesian(winningauction).filter((x, y) => x.timestamp > y.timestamp - 10 && x.timestamp
  • 是的,感谢您提醒我有关笛卡尔函数的信息。它绝对是一种享受。您可以将其添加为答案吗?

标签: scala apache-spark rdd


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    • 2020-08-24
    • 2019-09-28
    • 2019-09-26
    • 1970-01-01
    • 2018-03-15
    相关资源
    最近更新 更多