Hi Gordon, thx for you time, will try to find other suitable serializer.

> On 13 Feb 2019, at 07:25, Tzu-Li (Gordon) Tai <tzuli...@apache.org> wrote:
> 
> Hi,
> 
> I would suggest to avoid Kryo for state serialization, especially if this job 
> is meant for production usage.
> It might get in the way in the future when you might decide to upgrade your 
> value state schema.
> 
> To do that, when declaring the descriptor for your MapState, provide a 
> specific serializer for your value ( java.util.List[SomeClass[_]]  ).
> You should be able to use Flink's ListSerializer for this. By providing a 
> specific serializer, this bypasses Flink's type extraction for your state 
> which determines to use the KryoSerializer as a fallback for unrecognizable 
> types.
> You can find more information about custom state serialization here [1].
> 
> Cheers,
> Gordon
> 
> [1] 
> https://ci.apache.org/projects/flink/flink-docs-master/dev/stream/state/custom_serialization.html
>  
> <https://ci.apache.org/projects/flink/flink-docs-master/dev/stream/state/custom_serialization.html>
> On Wed, Feb 13, 2019 at 2:56 AM Rinat <r.shari...@cleverdata.ru 
> <mailto:r.shari...@cleverdata.ru>> wrote:
> Hi mates !
> 
> I’ve implemented a job, that stores it’s progress using MapState[K, V], where 
> K - is java.lang.String, and V - is a collection of some typed objects 
> java.util.List[SomeClass[_]]
> When Flink is trying to serialize this state, it is using kryo serializer for 
> value object and fails with StackOverflowException
> 
> java.lang.StackOverflowError
>       at java.util.HashMap.hash(HashMap.java:338)
>       at java.util.HashMap.get(HashMap.java:556)
>       at com.esotericsoftware.kryo.Generics.getConcreteClass(Generics.java:43)
>  
> This problem is related with the known bug in kryo 
> (https://github.com/EsotericSoftware/kryo/issues/341 
> <https://github.com/EsotericSoftware/kryo/issues/341>), and reveals itself 
> only when type of SomeClass is a java.util.BitSet. 
> 
> I’ve checked my job locally (from IDE) with latest (4.0.2 
> <https://mvnrepository.com/artifact/com.esotericsoftware/kryo/4.0.2>) kryo 
> lib, and it works fine, but I couldn’t change kryo version for distributed 
> mode, because it’s packaged into fat-jar (flink-dist_2.11-1.6.1.jar), that
> contains all runtime dependencies for Flink.
> 
> Maybe you can give me any advices, how to solve this issue, or register a 
> separate serializers for this case ?
> 
> Thx for your help.
> 
> 
> Sincerely yours,
> Rinat Sharipov
> Software Engineer at 1DMP CORE Team
> 
> email: r.shari...@cleverdata.ru <mailto:a.totma...@cleverdata.ru>
> mobile: +7 (925) 416-37-26
> 
> CleverDATA
> make your data clever
> 

Sincerely yours,
Rinat Sharipov
Software Engineer at 1DMP CORE Team

email: r.shari...@cleverdata.ru <mailto:a.totma...@cleverdata.ru>
mobile: +7 (925) 416-37-26

CleverDATA
make your data clever

Reply via email to