Apache spark Spark多维RDD分区

Apache spark Spark多维RDD分区,apache-spark,pyspark,rdd,Apache Spark,Pyspark,Rdd,如果我创建如下两个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行,每行有十亿个项目 我的问题是:对于第二行,如果我有两个worker,那么一行去给一个worker,另外两行去给另一个

如果我创建如下两个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行,每行有十亿个项目


我的问题是:对于第二行,如果我有两个worker,那么一行去给一个worker,另外两行去给另一个worker吗

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

根据第二种情况下的配置,您最多会得到三个非空分区,每个分区分配给一个工作进程,因此在第二种情况下,可能会出现1-2拆分


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

这是否意味着,如果我有10个worker,数据将只被划分为3个worker?(在第二行的情况下)这是正确的。不管你有多少工人,他们中的大多数都是闲着的。此外,每个元素都必须适合工作内存。谢谢。那真的很有帮助。