gpt4 book ai didi

java - 在这种情况下 Spark 内部是如何工作的?

转载 作者:行者123 更新时间:2023-12-02 12:53:29 25 4
gpt4 key购买 nike

  JavaRDD<String> textFile = sc.textFile("C://test.txt");

假设我有 1000 行 test.txt 文件。我有一个带有四核处理器的机器。这是我对 Spark 如何实现并行性的理解

  1. Spark 将在单线程中从文件中读取字符 block 。不确定是否有默认 block 大小或取决于文件大小
  2. Spark 将根据以下两个参数决定要创建多少个分区 a) 在步骤 1 中读取的数据大小和 b) 基于CPU的核心数量
  3. 根据步骤 2 中的分区大小,它将生成线程。如果有 3 个分区,它将产生 3 个线程。

我的理解正确吗?

最佳答案

对于本地文件,Spark 将分割文件的 n 个 block ,其中 n 是默认并行级别,等于集群中的核心数量(例如,如果是 local[4],则为 4)。

我们可以提供多个分区来覆盖该行为:

textFile = sc.textFile("C://test.txt", 8) // will create 8 spark partitions.

我们可以检查分区:

textFile.partitions()
//Array[org.apache.spark.Partition] = Array(
org.apache.spark.rdd.HadoopPartition@cd0,
org.apache.spark.rdd.HadoopPartition@cd1,
org.apache.spark.rdd.HadoopPartition@cd2,
org.apache.spark.rdd.HadoopPartition@cd3,
org.apache.spark.rdd.HadoopPartition@cd4,
org.apache.spark.rdd.HadoopPartition@cd5,
org.apache.spark.rdd.HadoopPartition@cd6,
org.apache.spark.rdd.HadoopPartition@cd7
)

请注意,这是底层 hadoop 文件系统实现的行为。对于分布式文件系统,例如 hdfs,Spark 将使用所使用文件的分区级别。 Spark和Hadoop之间的交互实现在 https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/rdd/HadoopRDD.scala

关于java - 在这种情况下 Spark 内部是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44525506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com