Spark中的CPU利用率低

时间:2015-05-06 20:32:41

标签: scala hadoop apache-spark

我在8核机器上以本地模式运行Spark作业。它有一个本地SSD和64GB的RAM。 HDFS在同一台机器上以伪分布式模式运行。运行以下作业时,我无法获得CPU利用率以超过单个核心。 RAM使用率保持在10GB以下。环回接口最大可达333MB / s。无论哪种方式,磁盘IO通常低于30MB / s。如何编写此代码以更好地利用我的硬件资源?

object FilterProperty {
    def main(args:Array[String]) {
        val conf = new SparkConf()
            .setAppName("Filter Claims Data for Property")
            .setMaster("local")
            .set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
            .set("spark.cores.max", "16")
        conf.registerKryoClasses(Array(classOf[JsObject]))
        val sc = new SparkContext(conf)
        val filtered = sc.textFile("hdfs://localhost:9000/user/kevin/intermediate/claims.json", 48)
            .filter(s => s != "")
            .map(s => Json.parse(s).as[JsObject])
            .filter(Util.property_filter)
        filtered.saveAsTextFile("hdfs://localhost:9000/user/kevin/intermediate/property_claims.json" + fn)
        sc.stop()
    }
}

1 个答案:

答案 0 :(得分:2)

您应该更改此行代码

.setMaster("local")

.setMaster("local[*]")

表示在计算机上使用尽可能多的线程。或者您可以设置一个数字而不是*,这意味着使用该数量的线程。