Sparkでマルチクラスタを使用すると、SQLクエリが遅くなることがあります。私はマスターのために2人の労働者を作り、地元のスパークスタンドアローンで働いています。はい、私はローカルマシン上のワーカーを作成するためにメモリとコアの数を半分にしました。私はsqlContext
のパーティションを、partitionColumn
,lowerBound
、UpperBound
、numberPartitions
を使用して指定しました。これにより、作業(またはパーティション)を作業者に分散させることができます。私は(partitionColumn
が一意である)以下のようにそれらを説明:Spark Multi Clustersを使用したSQLクエリの改善
df = sqlContext.read.format("jdbc").options(
url = "jdbc:sqlserver://localhost;databasename=AdventureWorks2014;integratedSecurity=true;",
driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver",
dbtable = query,
partitionColumn = "RowId",
lowerBound = 1,
upperBound = 10000000,
numPartitions = 4).load()
私はオプションを指定した後、マスター上で、私のスクリプトを実行したが、私は、クラスタなしで火花上で動作しているときに対して任意のパフォーマンスの向上を得ることができませんでした。私は実験の完全性のために記憶を半分にしてはならないはずであることを知っています。しかし、それが事実かどうか、あるいはそうでない場合は何らかの理由があるかどうかを知りたいと思います。どんな考えも歓迎です。どうもありがとう。
通常、パフォーマンスの利点は、ローカルマシンで実験するときではなく、スケールで発生します。 – mtoto