Apache spark 分区在Spark中是如何工作的?

Apache spark 分区在Spark中是如何工作的?,apache-spark,partitioning,Apache Spark,Partitioning,我试图理解ApacheSpark是如何进行分区的。你们能帮忙吗 以下是场景: 一个主节点和两个节点,每个节点有一个核心 大小为10 MB的文件count.txt 下面创建了多少个分区 rdd = sc.textFile(count.txt) 文件的大小是否对分区的数量有任何影响?默认情况下,会为每个HDFS分区创建一个分区,默认情况下,该分区的大小为64MB(从中) 可以传递另一个参数defaultMinPartitions,该参数覆盖spark将创建的最小分区数。如果不重写此值,则spa

我试图理解ApacheSpark是如何进行分区的。你们能帮忙吗

以下是场景:

  • 一个主节点和两个节点,每个节点有一个核心
  • 大小为10 MB的文件
    count.txt
下面创建了多少个分区

rdd = sc.textFile(count.txt)

文件的大小是否对分区的数量有任何影响?

默认情况下,会为每个HDFS分区创建一个分区,默认情况下,该分区的大小为64MB(从中)


可以传递另一个参数
defaultMinPartitions
,该参数覆盖spark将创建的最小分区数。如果不重写此值,则spark将创建至少与
spark.default.parallelism
相同数量的分区


由于
spark.default.parallelism
应该是集群中所有机器的内核数,因此我相信在您的情况下至少会创建3个分区


您还可以
重新分区
合并
RDD来更改分区数,这反过来会影响可用并行度的总量。

默认情况下,为什么不接受/评论答案?@jacek。并行度
(创建了3个分区)和数据文件为10 MB(HDFS上的单个块),Spark分区将包含多少数据?是否:1.划分为3个相等的部分(每个3.3 MB)并发送给执行器。2.未划分(P1=10MB,P2=P3=0 MB)由于数据的局部性,在同一个节点上执行。3.所有3个分区中的数据都随机洗牌。@McGrep先生,有一点混淆,在第一个语句中,您说默认情况下会为每个HDFS块创建一个分区,然后在第三个语句中,您说如果我们不覆盖
defaultMinPartitions
,那么它至少会创建一个分区许多分区都是
spark.default.parallelism
,假设它是集群中的核心数。那么它将创建
partition=HDFS partition
=number of core
?@LiveAndLetLive我相信这些都是最小值。您将拥有至少与三个值中最小值相同数量的分区。信息关于HDFS的信息似乎过时了。文档中说“默认情况下,Spark为文件的每个块创建一个分区(HDFS中的块默认为128MB)”
Spark.default.parallelism
是由join、reduceByKey和parallelize等转换返回的RDD中的默认分区数,这些转换不是由用户设置的。