JavaRDD<String> textFile = sc.textFile("C://test.txt");
说我有1000行test.txt文件。我有一个四核处理器的单机版。这里是我的理解火花如何实现并行性在这里Spark在这种情况下如何工作?
- Spark将从单个线程中的文件读取字符块。不确定是否有默认的块大小或取决于文件大小
- Spark将根据以下两个参数确定要创建多少个分区 a)在步骤1中读取的数据大小和 b)基于数字cpu中的核心数
- 根据步骤2中的分区大小,它会产生线程。如果有3个分区,它会产生三个线程。
我的理解是否正确?
中实现,根据我的知识,Spark默认将分区等同于文本文件块的数量。我们可以通过给出 (文件路径,分区数量)手动定义分区 – user4342532
您可以详细说明文件中块的含义是什么吗?你的意思是有1000行,spark会将它分成4块,然后创建4个分区,然后在同一台机器上创建4个线程,否则发送给4个工作者。这样对吗 ? –
在Hadoop中,默认块大小为64 MB(apache distribution,如果cloudera为128mb)如果你的文件大小是假设为256mb。其默认存储为4个块(4 * 64 mb)。 Spark默认将每个块作为每个分区,并且我们可以管理它们。 – user4342532