Serialization questions

Posted by Flavio Pompermaier on
URL: http://deprecated-apache-flink-user-mailing-list-archive.369.s1.nabble.com/Serialization-questions-tp21561.html

Hi to all,
I was trying to check whether our jobs are properly typed or not.
I've started disabling generic types[1] in order to discover untyped transformations and so I added the proper returns() to operators.

Unfortunately there are jobs where we serialize Thrift and DateTime objects, so I need to properly configure the serializers in the ExecutionEnvironment:

env.registerTypeWithKryoSerializer(DateTime.class, JodaDateTimeSerializer.class);
env.getConfig().addDefaultKryoSerializer(EntitonAtom.class, TBaseSerializer.class);
env.getConfig().addDefaultKryoSerializer(EntitonQuad.class, TBaseSerializer.class);

Those jobs don't work when I disable generic types and I get the following exception:

Exception in thread "main" java.lang.UnsupportedOperationException: Generic types have been 
disabled in the ExecutionConfig and type xxx.EntitonAtom is treated as a generic type.

 I have a couple of questions:
  • addDefaultKryoSerializer differs from registerTypeWithKryoSerializer because addDefaultKryoSerializer use the passed serializer also for subclasses of the configured class. Am I right? This is not very clear in the method's Javadoc...
  • how to avoid that exception?
Best,
Flavio

[1] env.getConfig().disableGenericTypes();