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 分区的主要内容,如果未能解决你的问题,请参考以下文章