Roh*_*gam 2 google-cloud-dataflow
我想在dafalow ParDo中使用Memcache?任何想法如何?我不能使用现有的memcahse lib,因为它们属于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()...
}
}
Run Code Online (Sandbox Code Playgroud)
另请注意,要从非AppEngine环境访问AppEngine API(包括Memcache),您应该使用Remote API.
| 归档时间: |
|
| 查看次数: |
428 次 |
| 最近记录: |