Avaliação do PySpark

Estou tentando o código a seguir, que adiciona um número a cada linha em um RDD e retorna uma lista de RDDs usando o PySpark.

from pyspark.context import SparkContext
file  = "file:///home/sree/code/scrap/sample.txt"
sc = SparkContext('local', 'TestApp')
data = sc.textFile(file) 
splits = [data.map(lambda p :  int(p) + i) for i in range(4)]
print splits[0].collect()
print splits[1].collect()
print splits[2].collect()

O conteúdo do arquivo de entrada (sample.txt) é:

1
2
3

Eu estava esperando uma saída como esta (adicionando os números no rdd com 0, 1, 2 respectivamente):

[1,2,3]
[2,3,4]
[3,4,5]

considerando que a produção real foi:

[4, 5, 6]
[4, 5, 6]
[4, 5, 6]

o que significa que a compreensão utilizou apenas o valor 3 para a variável i, independentemente daalcance (4).

Por que esse comportamento acontece?

questionAnswers(2)

yourAnswerToTheQuestion