这段代码给了我一个“int object is not subscriptable”错误,尽管它为我的一个朋友工作。错误出现在第四行,我试图用reducebykey来计算平均值。为什么会这样?
nonNullRDD = marchRDD.filter(lambda row: row.journal).filter(lambda row: row.abstract)
abstractRDD = nonNullRDD.map(lambda field: (field.journal, field.abstract))
splitRDD = abstractRDD.map(lambda word: (word[0], len(word[1].split(" "))))
groupedRDD = splitRDD.reduceByKey(lambda x, y: (x[0]+y[0], x[1]+y[1])).mapValues(lambda x: x[0]/x[1])
1条答案
按热度按时间6ojccjat1#
在
reduceByKey
函数,则提供一个lambda函数,该函数作用于rdd的值,rdd是len(word[1].split(" "))
. 你试过了x[0]
在一个整数上,这将导致您得到的错误。我相信rdd应该是
(key, (value, 1))
因此,代码的第四行将给出每个键的平均值。为了实现这一点,您可以将第三行中的lambda函数更改为: