我想在 dafalow ParDo 中使用 Memcache?有什么想法吗?我无法使用现有的 memcahse 库,因为它们属于 appengine 并且不可序列化。
罗希特
我的猜测是,你的文件中有一个私有变量DoFn
类型的MemcacheServiceImpl
(如果我的猜测是错误的,请编辑您的问题以包含您的代码DoFn
).
事实上,Dataflow 会序列化您的DoFn
当您提交管道并在工作人员上反序列化它们时。处理这个问题的正确方法是使变量瞬态,并延迟初始化:
class MyDoFn extends DoFn<..., ...> {
private transient MemcacheService memcache;
private MemcacheService getMemcache() {
if (memcache == null) {
memcache = MemcacheServiceFactory.getMemcacheService();
...
}
}
public void process(...) {
...use getMemcache()...
}
}
另请注意,要从非 AppEngine 环境访问 AppEngine API(包括 Memcache),您应该使用远程API https://cloud.google.com/appengine/docs/java/tools/remoteapi.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)