已解决
spark中使用flatmap报错:TypeError: ‘int‘ object is not subscriptable
来自网友在路上 163863提问 提问时间:2023-10-14 04:34:05阅读次数: 63
最佳答案 问答题库638位专家为你答疑解惑
1、背景描述
菜鸟笔者在运行下面代码时发生了报错:
from pyspark import SparkContextsc = SparkContext("local", "apple1012")rdd = sc.parallelize([[1, 2], 3, [7, 5, 6]])rdd1 = rdd.flatMap(lambda x: x)
print(rdd1.collect())
报错描述如下:
2、报错原因
显然这是传入的数据类型发生了错误:
因为我们试图对整数对象执行下标操作,而这是不允许的。
原来flatMap底层通过取下标来展开元素 如果rdd集合里面有非可迭代对象(如int元素)则会报错TypeError: 'int' object is not subscriptable。
查看flatmap算子源码我们知道,传入的参数被要求是一个可迭代对象,那么rdd集合中有int元素报错也就不奇怪了。
3、解决方案
解决方法如下:
我们可以在映射函数内部处理这种情况。例如,如果要返回单个元素,可以将其放入一个列表中,以确保总是返回一个可迭代对象。
from pyspark import SparkContextsc = SparkContext("local", "apple1012")rdd = sc.parallelize([[1, 2], 3, [7, 5, 6]])# flatMap底层通过取下标来展开元素 如果rdd集合里面有非可迭代对象(如int元素)则会报错TypeError: 'int' object is not subscriptabledef my_flatmap(x):if isinstance(x, int):# 如果是整数,将其放入一个列表中return [x]else:# 如果不是整数,直接返回可迭代对象return xrdd1 = rdd.flatMap(my_flatmap)
print(rdd1.collect())
修改代码后我们运行程序,完美执行:
查看全文
99%的人还看了
相似问题
- conda创建pytorch环境报错
- Python通过selenium调用IE11浏览器报错解决方法
- kafka本地安装报错
- 【BUG】第一次创建vue3+vite项目启动报错Error: Cannot find module ‘worker_threads‘
- git 构建报错
- Docker build报错总结,版本过新大避雷!
- Mongodb3.4升级高版本mongoTemplate.executeCommand报错The cursor option is required
- duplicate复制数据库单个数据文件复制失败报错rman-03009 ora-03113
- 安装第三方包报错 error: Microsoft Visual C++ 14.0 or greater is required——解决办法
- 邮件|gitpushgithub报错|Lombok注解
猜你感兴趣
版权申明
本文"spark中使用flatmap报错:TypeError: ‘int‘ object is not subscriptable":http://eshow365.cn/6-19378-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: JS 实现图片懒加载
- 下一篇: HarmonyOS 远端状态订阅开发实例