首页 文章

分解 Spark RDD

提问于
浏览
1

在 Spark 中,可以使用 zip,union,join 等将多个 RDD 组合为一个。

是否可以有效分解 RDD?也就是说,是否不对原始 RDD 执行多次传递?我正在寻找的东西类似于:

val rdd: RDD[T] = ...     
val grouped: Map[K, RDD[T]] = rdd.specialGroupBy(...)

RDD 的优势之一是它们使高效地执行迭代计算成为可能。在我遇到的某些(机器学习)用例中,我们需要分别对每个组执行迭代算法。

我知道的当前可能性是:

  • GroupBy:groupBy 返回一个 RDD [(K,Iterable [3])],它没有为组本身(可迭代)提供 RDD 好处。

  • 聚合:诸如 reduceByKey,foldByKey 等仅对数据执行一次“迭代”,并且不具有实现迭代算法的表达能力。

  • 使用过滤器方法和对数据进行多次遍历(遍历次数等于键数)来创建单独的 RDD,这在键数不是很小的情况下是不可行的。

给定一个非常大的(表格)数据集,我正在考虑的一些用例:

  • 我们希望对每个不同的列分别执行一些迭代算法。例如,某些自动特征提取(一种自然的方法)将是分解数据集,以使每个列都由单独的 RDD 表示。

  • 我们希望将数据集分解为不相交的数据集(例如每天的数据集),并对每个数据集执行一些机器学习建模。

1 回答

相关问题