2015-10-23 32 views
3

我正在使用從另一個RDD中獲取的值。我使用第一個RDD來計算平均值,並執行.collect()以將其存入一個名爲z的變量中。RDD問題 - 列表索引超出範圍

當訪問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)]

+0

您是否至少檢查了z是否爲空? – eliasah

+0

[(24.910157132138149,474512.76637794758)] – mhn

+0

'z'是一個包含RDD中所有元素的列表。你只想要元素0和1嗎?假設他們在場,正如@eliasah指出 – Pynchia

回答

1

如果z[(24.910157132138149, 474512.76637794758)],它是具有單個元素的列表。所以z[1]導致IndexError

該單個元素(z[0])是一個雙元素元組,因此假設您想要訪問這兩個元素,如z[0]z[1]。如果是這樣,這是你需要什麼:(注意[0]在年底它以列表的第一個(也是唯一一個)元素。)

z = avgtuples.collect()[0] 

很奇怪,你將有一個單一的-row RDD(summedtuples)。代碼中可能會有更多可以改進的地方,但這超出了問題的範圍。