hudi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From GitBox <...@apache.org>
Subject [GitHub] [incubator-hudi] garyli1019 commented on a change in pull request #1352: [HUDI-625] Fixing performance issues around DiskBasedMap & kryo
Date Tue, 25 Feb 2020 01:06:55 GMT
garyli1019 commented on a change in pull request #1352: [HUDI-625] Fixing performance issues
around DiskBasedMap & kryo
URL: https://github.com/apache/incubator-hudi/pull/1352#discussion_r383605610
 
 

 ##########
 File path: hudi-common/src/main/java/org/apache/hudi/common/util/SerializationUtils.java
 ##########
 @@ -121,50 +116,16 @@ Object deserialize(byte[] objectData) {
 
     public Kryo newKryo() {
 
-      Kryo kryo = new KryoBase();
+      Kryo kryo = new Kryo();
       // ensure that kryo doesn't fail if classes are not registered with kryo.
       kryo.setRegistrationRequired(false);
       // This would be used for object initialization if nothing else works out.
-      kryo.setInstantiatorStrategy(new org.objenesis.strategy.StdInstantiatorStrategy());
+      kryo.setInstantiatorStrategy(new Kryo.DefaultInstantiatorStrategy(new StdInstantiatorStrategy()));
       // Handle cases where we may have an odd classloader setup like with libjars
       // for hadoop
       kryo.setClassLoader(Thread.currentThread().getContextClassLoader());
       return kryo;
     }
 
-    private static class KryoBase extends Kryo {
-      @Override
-      protected Serializer newDefaultSerializer(Class type) {
-        final Serializer serializer = super.newDefaultSerializer(type);
-        if (serializer instanceof FieldSerializer) {
-          final FieldSerializer fieldSerializer = (FieldSerializer) serializer;
-          fieldSerializer.setIgnoreSyntheticFields(true);
-        }
-        return serializer;
-      }
-
-      @Override
-      protected ObjectInstantiator newInstantiator(Class type) {
-        return () -> {
-          // First try reflectasm - it is fastest way to instantiate an object.
-          try {
-            final ConstructorAccess access = ConstructorAccess.get(type);
-            return access.newInstance();
-          } catch (Throwable t) {
-            // ignore this exception. We may want to try other way.
-          }
-          // fall back to java based instantiation.
-          try {
-            final Constructor constructor = type.getConstructor();
-            constructor.setAccessible(true);
-            return constructor.newInstance();
-          } catch (NoSuchMethodException | IllegalAccessException | InstantiationException
-              | InvocationTargetException e) {
-            // ignore this exception. we will fall back to default instantiation strategy.
-          }
-          return super.getInstantiatorStrategy().newInstantiatorOf(type).newInstance();
 
 Review comment:
   What I curious about was what you mentioned in the ticket:
   ```
   kryo.register(HoodieKey.class, new HoodieKeySerializer());
   kryo.register(GenericData.Record.class, new GenericDataRecordSerializer());
   kryo.register(HoodieRecord.class, new HoodieRecordSerializer());
   kryo.register(HoodieRecordLocationSerializer.class, new HoodieRecordLocationSerializer());
   kryo.register(OverwriteWithLatestAvroPayload.class, new OverwriteWithLatestPayloadSerializer());
   ```
   Where this is done? 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

Mime
View raw message