在星火编程指南中提到的切片作为RDDS的功能(包括并行收集或Hadoop的数据集.)("星火将运行一个任务,为集群中的每个片".)但在上RDD持续性的部分,使用分区的概念没有介绍.此外,RDD文档仅提及没有提及切片的分区,而SparkContext文档提到了用于创建RDD的切片,但提到了用于在RDD上运行作业的分区.这两个概念是一样的吗?如果没有,它们有何不同?
调优 - 并行级别表示"Spark根据其大小自动设置在每个文件上运行的"map"任务的数量...对于分布式"reduce"操作,例如groupByKey和reduceByKey,它使用最大的父RDD分区数.您可以将并行级别作为第二个参数传递...."那么这可以解释分区和切片之间的区别吗?分区与RDD存储有关,切片与并行度有关,默认情况下,接头是根据数据大小还是分区数计算的?
我用这种方式启动了我的集群:
/usr/lib/spark/bin/spark-submit --class MyClass --master yarn-cluster--num-executors 3 --driver-memory 10g --executor-memory 10g --executor-cores 4 /path/to/jar.jar
Run Code Online (Sandbox Code Playgroud)
我做的第一件事是阅读一个大文本文件,并计算它:
val file = sc.textFile("/path/to/file.txt.gz")
println(file.count())
Run Code Online (Sandbox Code Playgroud)
执行此操作时,我看到只有一个节点实际上正在读取文件并执行计数(因为我只看到一个任务).这是预期的吗?我之后应该重新分配我的RDD,或者当我使用map reduce函数时,Spark会为我做吗?