加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – Spark:从RDD [X]生成所有可能组合的RDD [(X,X)]

发布时间:2020-12-16 09:35:31 所属栏目:安全 来源:网络整理
导读:从Scala集合中实现“.combinations”功能是否可能? /** Iterates over combinations. * * @return An Iterator which traverses the possible n-element combinations of this $coll. * @example `"abbbc".combinations(2) = Iterator(ab,ac,bb,bc)` */ 例
从Scala集合中实现“.combinations”功能是否可能?

/** Iterates over combinations.
   *
   *  @return   An Iterator which traverses the possible n-element combinations of this $coll.
   *  @example  `"abbbc".combinations(2) = Iterator(ab,ac,bb,bc)`
   */

例如,对于size = 2的组合,如何从RDD [X]到RDD [List [X]]或RDD [(X,X)]。如果RDD中的所有值都是唯一的。

解决方法

笛卡尔乘积和组合是两个不同的东西,笛卡尔乘积将创建大小为rdd.size()^ 2的RDD,组合将创建一个大小为rdd.size()的RDD,选择2

val rdd = sc.parallelize(1 to 5)
val combinations = rdd.cartesian(rdd).filter{ case (a,b) => a < b }`.
combinations.collect()

注意,只有在列表的元素上定义了一个顺序,因为我们使用<这一个只能用于选择两个,但是可以通过确保关系a< b为所有a和b的顺序

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读