Spark 多维 RDD 分区

Posted

技术标签:

【中文标题】Spark 多维 RDD 分区【英文标题】:Spark Multidimensional RDD partitioning 【发布时间】:2015-08-08 07:32:32 【问题描述】:

如果我创建两个这样的 rdd:

a = sc.parallelize([[1 for j in range(3)] for i in xrange(10**9)])

b = sc.parallelize([[1 for j in xrange(10**9)] for i in range(3)])

当您认为第一个分区很直观时,数十亿行围绕工作人员进行分区。 但是第二个有 3 行,每行有十亿个项目。

我的问题是:对于第二行,如果我有 2 名工人,一排给一名工人,另外两排给另一名工人吗?

【问题讨论】:

【参考方案1】:

Spark 中的数据分布仅限于用于创建 RDD 的***序列。

根据第二种情况下的配置,您将获得最多三个非空分区,每个分区分配给一个工作人员,因此在第二种情况下,1-2 拆分是可能的结果。

一般来说,少量元素,尤其是非常大的元素,不太适合 Spark 处理模型。

【讨论】:

这是否意味着,如果我有 10 个工作人员,数据将只分区 3 个工作人员?(在第二行的情况下) 没错。不管你有多少工人,他们中的大多数都会闲置。此外,每个元素都必须适合工人记忆。 谢谢。那真的很有帮助。

以上是关于Spark 多维 RDD 分区的主要内容,如果未能解决你的问题,请参考以下文章

Spark 多维分析

spark rdd分区数据支持哪些压缩格式

在 SQL Server Management Studio 中从多维数据集中删除分区

Spark——窄依赖和宽依赖

如何将多维数组添加到现有的 Spark DataFrame

处理多维立方体的有效方法