0
私はdafalow ParDoでMemcacheを使いたいですか?私はappengineに属し、シリアライズできないので、既存のmemcahseライブラリを使用することはできません。 のRohitmemcacheをデータフローに使用するには?
私はdafalow ParDoでMemcacheを使いたいですか?私はappengineに属し、シリアライズできないので、既存のmemcahseライブラリを使用することはできません。 のRohitmemcacheをデータフローに使用するには?
私の推測では、あなたが(私の推測が間違っている場合は、あなたのDoFn
のコードが含まれるようにあなたの質問を編集してください)タイプMemcacheServiceImpl
のごDoFn
でプライベート変数を持っている、です。
あなたがパイプラインを提出し、労働者にそれらをデシリアライズするとき確かに、データフローは、あなたのDoFn
年代をシリアル化します。これを処理する適切な方法は、変数の過渡を行い、遅延し、それを初期化することです:
class MyDoFn extends DoFn<..., ...> {
private transient MemcacheService memcache;
private MemcacheService getMemcache() {
if (memcache == null) {
memcache = MemcacheServiceFactory.getMemcacheService();
...
}
}
public void process(...) {
...use getMemcache()...
}
}
はまた、非AppEngineの環境から、あなたがRemote APIを使用する必要があり、Memcacheの含めAppEngineのAPIにアクセスすることに注意してください。
パルドのが任意のコードを実行することができます、あなたはMemcacheのアクセスのためのライブラリなど、必要なライブラリを使用することは自由です。あなたが使用しているコードの例とあなたが得ているエラーを教えてもらえますか? – jkff
memcacheにアクセスするには、以下の貼り付けリンクのサーブレットに記載されているAPIを使用しようとしています。 https://cloud.google.com/appengine/docs/java/memcache/examples私はこれをParDoの内部で使用しています。それはjava.io.NotSerializableExceptionをスロー:java.io.ObjectOutputStream.writeObject0でcom.google.appengine.api.memcache.MemcacheServiceImpl \t(ObjectOutputStream.java:1184) –