【发布时间】:2021-11-16 20:40:19
【问题描述】:
我正在学习 Pyspark,只是一个初学者。我收到标题中提到的错误。 我已经关注了类似的问题并尝试了这里提到的内容,但仍然没有帮助。 https://stackoverflow.com/questions/20441035/unsupported-operand-types-for-int-and-str
请在下面找到我的一些代码sn-p
age=lines.map(lambda x: x.split(',')[2])
friends=lines.map(lambda x: x.split(',')[3])
rdd=lines.map(lambda x: int(x.split(',')[2]) +","+ int(x.split(',')[3]))
totalsByAge = rdd.mapValues(lambda x: (x, 1)).reduceByKey(lambda x, y: (x[0] + y[0], x[1] + y[1]))
averagesByAge = totalsByAge.mapValues(lambda x: x[0] / x[1])
results = averagesByAge.collect()
for result in results:
print(result)
我在使用 map 时已将 rdd 转换为 int,但仍然收到错误
rdd=lines.map(lambda x: int(x.split(',')[2]) +","+ int(x.split(',')[3]))
TypeError: unsupported operand type(s) for +: 'int' and 'str'
我也尝试删除“+”,但语法不正确。
【问题讨论】:
-
该错误肯定是由于您尝试添加/连接的值类型不同(int + str + int)。根据我的理解,您正在尝试为第 3 列(年龄)中的每个值找到第 4 列(朋友)中的平均值,例如按年龄分组,然后聚合朋友列以找到平均值。这种理解正确吗?如果没有,您能否添加您要使用此代码实现的目标?一些示例输入和输出数据也会有所帮助。