【问题标题】:Spark Multidimensional RDD partitioningSpark 多维 RDD 分区
【发布时间】: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 名工人,一排给一名工人,另外两排给另一名工人吗?

【问题讨论】:

    标签: apache-spark pyspark rdd


    【解决方案1】:

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

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

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

    【讨论】:

    • 这是否意味着,如果我有 10 个工作人员,数据将只分区 3 个工作人员?(在第二行的情况下)
    • 没错。不管你有多少工人,他们中的大多数都会闲置。此外,每个元素都必须适合工人记忆。
    • 谢谢。那真的很有帮助。
    猜你喜欢
    • 2015-06-18
    • 1970-01-01
    • 2021-02-24
    • 2019-06-16
    • 2017-02-17
    • 2020-09-18
    • 2016-01-04
    • 2016-07-17
    • 2016-08-01
    相关资源
    最近更新 更多