0

私は GuavaCache (とscalacache wrapper ) を使用しており、いくつかのスパーク パイプラインでキャッシュ オブジェクト全体を保存して使用したいと考えています。

kryo Encoder を使用しSomeServiceて、キャッシュを含むケース クラスである をエンコードします。コードを実行すると、次の例外がスローされます。

com.esotericsoftware.kryo.KryoException: java.lang.NullPointerException
Serialization trace:
localCache (com.google.common.cache.LocalCache$LocalManualCache)
underlying (scalacache.guava.GuavaCache)
cacheManager (com.myproject.LocalCacheManager)
LocalCacheManager(com.project.SomeService)
    at com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:144)
    at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:543)
    at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:731)

Guava キャッシュはシリアライズ可能であるため、Kryo エンコーダーでエンコードできるはずだと考えました。LocalManualCacheクラスは Serializable も定義されています

  • グアバキャッシュを直接使用したときの同じエラー
  • asMap各レコードの TTL が失われるため、使用したくありません。

gauvaキャッシュオブジェクトを手動でエンコードおよびデコードできますか? それとも、カスタム キャッシュを使用できなくなるのでしょうか?

4

0 に答える 0