【发布时间】:2023-03-03 15:09:01
【问题描述】:
我以这种方式启动了我的集群:
/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
我做的第一件事是阅读一个大文本文件,并计算它:
val file = sc.textFile("/path/to/file.txt.gz")
println(file.count())
执行此操作时,我看到只有一个节点实际上正在读取文件并执行计数(因为我只看到一个任务)。这是预期的吗?我应该在之后重新分区我的 RDD,或者当我使用 map reduce 函数时,Spark 会为我做吗?
【问题讨论】:
-
你的“defaultMinPartitions”是什么?正如文档明确指出的那样, textFile 采用可选的分区数参数,默认为该参数。
-
我的 defaultMinPartitions 大于一。看来我不能强制指定数量的分区,因为它只是一个文本文件...正在运行.... val file = sc.textFile("/path/to/file.txt.gz",8) println(file.partitions.length) 返回 1
-
嗯,它必须在一个地方进行读取,因为那本质上是连续的。但我不明白为什么如果它不做 something 会有那个可选参数。
-
我明白了......所以因为 count 没有多大作用,它只保留了一个工人。但是,如果我运行 map 或 reduce,它应该开始传播数据集吗?
-
不知道,抱歉,但我猜应该。
标签: scala apache-spark partition