我在C ++中有遗留代码,它在HDFS上获取文件路径作为输入,运行并将其输出写入本地HDD。
以下是我如何称呼它:
val trainingRDD = pathsRdd.pipe(command = commandSeq, env = Map(), printPipeContext = _ => (),
printRDDElement = (kV, printFn) => {
val hdfsPath = kV._2
printFn(hdfsPath)
}, separateWorkingDir = false)
我看到Ganglia的CPU利用率约为50%。 spark.task.cpus
设置等于1.因此,每个任务获得1个核心。但我的问题是,当我用管道调用二进制文件时,该二进制文件是否像其他任何可执行文件一样获取主机上的所有可用内核,还是仅限于管道任务具有多少个内核?到目前为止,将spark.task.cpus
增加到2并没有增加使用率。
答案 0 :(得分:0)
Spark它可以并行读取文件,并且在spark中也有分区机制,更多分区=更多并行。如果您想增加CPU利用率,可以将SparkContext配置为
sc = new SparkConf().setMaster("local[*]")
更多详情访问https://spark.apache.org/docs/latest/configuration.html