この質問には既に回答がありましたら謝罪します。私はアーカイブを見ましたが、私の質問に固有の答えは見つかりませんでした。ローカルの[*]が使用可能なすべてのコアをマシンで使用しないのはなぜですか?
私はSparkを初めて使用しています。私はMacOS Sierraマシンでspark-2.1.1を使用して、ローカルで並列に添付された簡単なサンプルを実行しようとしています。私は4つのコアを持ち、それぞれ10秒かかる4つのタスクがあるので、合計で10秒以上を費やすことを望んでいました。
各タスクに予想される時間がかかることがわかります。しかし、私には実行スレッドが2つしかないようです。私は4を期待していました。コードでわかるように、各タプルの値は、対応するタスクの実行時間です。
insight086:pyspark lquesada $より出力/パート-00000
(u'1', 10.000892877578735)
(u'3', 10.000878095626831)
insight086:pyspark lquesada $より出力/パート-00001
(u'2', 10.000869989395142)
(u'4', 10.000877857208252)
また、これは取っている合計時間はかなりあります20秒以上:
total_time 33.2253439426
ありがとうございました!
乾杯、 ルイス
INPUTファイル:
1
2
3
4
SCRIPT:
from pyspark import SparkContext
import time
def mymap(word):
start = time.time()
time.sleep(10)
et=time.time()-start
return (word, et)
def main():
start = time.time()
sc = SparkContext(appName='SparkWordCount')
input_file = sc.textFile('/Users/lquesada/Dropbox/hadoop/pyspark/input.txt')
counts = input_file.flatMap(lambda line: line.split()) \
.map(mymap) \
.reduceByKey(lambda a, b: a + b)
counts.saveAsTextFile('/Users/lquesada/Dropbox/hadoop/pyspark/output')
sc.stop()
print 'total_time',time.time()-start
if __name__ == '__main__':
main()
このデータセットは非常に小さいので、何かを証明することは不可能です。 – eliasah
私の実際の質問は、使用したナンバーコアにあります。しかし、オーバーヘッドに関する私の懸念と確かに関連しているので、「コアの数をスケーリングする際のパフォーマンスの数が一貫していません」と私が指摘した事実を感謝します。 –