RDD问题 - 列表索引超出范围

时间:2015-10-23 07:53:30

标签: python apache-spark pyspark

我正在使用从另一个RDD获得的值。我使用第一个RDD来计算平均值,并使用.collect()将其提取到名为z的变量中。

然而,当访问z时,我收到错误list index out of range

我做错了什么?

avgtuples = summedtuples.map(lambda (ct, (Sx, Sy)): (((Sx*1.0)/ct), ((Sy*1.0)/ct)))
z = avgtuples.collect()
newmap = reducedhostbyte.map(lambda (h, (x, y)): (n, get_vals(x, y, z[0], z[1])))

z的值为[(24.910157132138149, 474512.76637794758)]

1 个答案:

答案 0 :(得分:2)

如果z[(24.910157132138149, 474512.76637794758)],则它是包含单个元素的列表。因此z[1]会导致IndexError

单个元素(z[0])是一个双元素元组,因此您可能希望将这两个元素作为z[0]z[1]来访问。如果是这样,这就是您所需要的:

z = avgtuples.collect()[0]

(注意最后的[0]。它采用列表的第一个(也是唯一的)元素。)

首先你会有一个单行RDD(summedtuples),这很奇怪。您的代码可能会有更多改进,但这超出了问题的范围。