【发布时间】:2016-06-28 18:46:24
【问题描述】:
我正在尝试以下代码,它为 RDD 中的每一行添加一个数字,并使用 PySpark 返回一个 RDD 列表。
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()
输入文件(sample.txt)中的内容是:
1
2
3
我期待这样的输出(将 rdd 中的数字分别与 0、1、2 相加):
[1,2,3]
[2,3,4]
[3,4,5]
而实际输出是:
[4, 5, 6]
[4, 5, 6]
[4, 5, 6]
这意味着理解只使用变量 i 的值 3,而与 range(4) 无关。
为什么会发生这种行为?
【问题讨论】:
标签: python apache-spark pyspark