とある技術者の研鑽結果

SIerのお仕事でたまった鬱憤を最新テクノロジー勉強で晴らすためのブログです

Sparkソースコードリーディング(1) - spark.textFile関数の引数

Apache Sparkソースコードリーディングを記録

まずは公式サイトに記載されているWordCountの第一文から追っていきましょう

file = spark.textFile("hdfs://...")

このsparkというのはSparkContextクラスのインスタンスなので該当メソッドを調査

def textFile(path: String, minPartitions: Int = defaultMinPartitions): RDD[String] = {
  hadoopFile(path, classOf[TextInputFormat], classOf[LongWritable], classOf[Text],
    minPartitions).map(pair => pair._2.toString).setName(path)
}

ふむふむpathはhdfsのパスを受け取り、minPartitionsはデフォルトを使用すると
デフォルトって何という話だが

def defaultMinPartitions: Int = math.min(defaultParallelism, 2)

とあり、defaultParallelismと2の小さい方となる
defaultParallelismはTaskSchedulerImplクラス内の関数になるのだが、並列数を定義するものである
local実行なら1、それ以上の並列なら並列数分だけの数を返す

要はdefaultMinPartitionsはlocal実行なら1だし、それ以外なら2が返ってくるものと思ってよさそう