python - 使用对象的成员函数映射 RDD
问题描述
我想将一个函数映射foo(x, my_object)
到一个 RDDrdd
rdd2 = rdd.map(lambda x: foo(x, my_object))
其中foo
定义为
def foo(x, some_object):
return [x, some_object.member_function(x)]
换句话说,映射应用了传递对象的成员函数。(在我的特定情况下,member_function()
本质上是对 Keraspredict()
函数的调用。)
问题是我得到了错误PicklingError: Could not serialize object: TypeError: can't pickle _thread.lock objects
。显然,Spark 在处理某些对象时存在问题。
做这个的最好方式是什么?
PS:我并不执着于使用 RDD,实际上我更喜欢使用 DataFrames。
编辑:与作为副本提出的示例不同,此问题并非特定于深度学习。此外,我正在寻找一个最小的工作示例,建议的副本不是(参考 AWS 的 S3 等)。最后,没有解释为什么mapPartitions()
是解决方案。我只想要一种执行映射并传递对象的方法。为什么这行不通?据说这与 Spark 的序列化机制有关,但我想知道(优雅的)解决方法可能是什么。
解决方案
推荐阅读
- r - r中的JointModel中的“纵向和事件过程中的样本量不同”
- jquery - 如何测试使用 Jquery 的 Angular 组件?
- reactjs - 如何在 Azure 云上托管 grafana?
- docker - docker 中 --net=host 参数的实际用例是什么?
- docker - Debian 映像 - 未找到 /sbin/init
- javascript - postcss 和 simple-vars - 使用对象内部的变量
- gradle - Intellij 插件,gradle 在使用 localPath 时总是下载 java-compiler-ant-tasks 的 LATEST-EAP-SNAPSHOT
- excel - 删除不同工作簿上的空行
- search - 考虑到服装等电子商务商品属性组合级别的产品可用性的 Solr 刻面
- python - AnalysisException:没有具有签名的匹配函数:rtrim(VARCHAR(40),STRING)