Apache Sparkに昨日入門しました。
spark-shell越しにSQLで色々試していて、小さな処理なのにやけに長いコンソール出力がある上にちょっと遅いなと思っていたのですが、解決したのでメモ。
SparkはRDD(データセット)を分散システムで効率よく扱うためにデータをパーティション分割するのですが、この分割数がデフォルトで200になっているようです。
このため、シングルノードで簡単な処理を実行するにしても200個に分割したデータそれぞれに対する処理を起動する必要が生まれてしまい、コンソール出力が増え、処理も少し遅くなります。
パーティション数を設定するには、下記のようにspark.sql.shuffle.partitionsプロパティを設定すればよいようです。
sqlContext.sql("set spark.sql.shuffle.partitions=1")
シングルノードで開発しているときなどはパーティション数を減らしておいた方が便利そうですね。