如何在数据流中使用memcache?

2024-02-04

我想在 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(使用前将#替换为@)

如何在数据流中使用memcache? 的相关文章

随机推荐