當我在Spark-Shell中運行一些Apache Spark示例或作爲作業時,我無法在單臺機器上實現完整的內核利用率。例如:Spark爲什麼不使用本地機器上的所有內核
var textColumn = sc.textFile("/home/someuser/largefile.txt").cache()
var distinctWordCount = textColumn.flatMap(line => line.split('\0'))
.map(word => (word, 1))
.reduceByKey(_+_)
.count()
當運行此腳本時,我大多數情況下在我的8核心計算機上只能看到1個或2個活動核心。 Spark是不是應該平行於此?
看着你正在閱讀本地文件。所以只有一個分區,'flatMap'和'map'只使用一個核心。您可以在'reduceByKey'中使用'numPartitions'參數來設置並行性。例如'reduceByKey(_ + _,8)'。然後'reduceByKey'和'count'將使用8個內核。 – zsxwing
@zsxwing你在哪裏看到它們只指定一個分區? .cache不限制分區嗎? – JimLohse