[jira] [Updated] (FLINK-20936) Improvements in custom partition extractor
[ https://issues.apache.org/jira/browse/FLINK-20936?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] zhoukui updated FLINK-20936: Description: In flink1.12.0, I saw PartitionTimeExtractor is a constructor without parameters, why not take the parameter “extractorPattern". See the source code below: {code:java} @Experimental public interface PartitionTimeExtractor extends Serializable { String DEFAULT = "default"; String CUSTOM = "custom"; /** * Extract time from partition keys and values. */ LocalDateTime extract(List partitionKeys, List partitionValues); static PartitionTimeExtractor create( ClassLoader userClassLoader, String extractorKind, String extractorClass, String extractorPattern) { switch (extractorKind) { case DEFAULT: return new DefaultPartTimeExtractor(extractorPattern); case CUSTOM: try { Class aClass = userClassLoader.loadClass(extractorClass); return (PartitionTimeExtractor) aClass.newInstance(); } catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) { throw new RuntimeException( "Can not new instance for custom class from " + extractorClass, e); } default: throw new UnsupportedOperationException( "Unsupported extractor kind: " + extractorKind); } } } {code} Would it be more reasonable to bring a parameter construction method? as follows: try { Class aClass = userClassLoader.loadClass(extractorClass); Constructor declaredConstructor = aClass.getDeclaredConstructor(String.class); return (PartitionTimeExtractor) declaredConstructor.newInstance(extractorPattern); } catch (ClassNotFoundException | IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) { throw new RuntimeException( "Can not new instance for custom class from " + extractorClass, e); } was: In flink1.12.0, I saw PartitionTimeExtractor is a constructor without parameters, why not take the parameter “extractorPattern". See the source code below: {code:java} @Experimental public interface PartitionTimeExtractor extends Serializable { String DEFAULT = "default"; String CUSTOM = "custom"; /** * Extract time from partition keys and values. */ LocalDateTime extract(List partitionKeys, List partitionValues); static PartitionTimeExtractor create( ClassLoader userClassLoader, String extractorKind, String extractorClass, String extractorPattern) { switch (extractorKind) { case DEFAULT: return new DefaultPartTimeExtractor(extractorPattern); case CUSTOM: try { Class aClass = userClassLoader.loadClass(extractorClass); return (PartitionTimeExtractor) aClass.newInstance(); } catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) { throw new RuntimeException( "Can not new instance for custom class from " + extractorClass, e); } default: throw new UnsupportedOperationException( "Unsupported extractor kind: " + extractorKind); } } } {code} Would it be more reasonable to bring a parameter construction method? as follows: try { Class aClass = userClassLoader.loadClass(extractorClass); Constructor declaredConstructor = aClass.getDeclaredConstructor(String.class); return (PartitionTimeExtractor) declaredConstructor.newInstance(extractorPattern); } catch (ClassNotFoundException | IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) { throw new RuntimeException( "Can not new instance for custom class from " + extractorClass, e); } > Improvements in custom partition extractor > --- > > Key: FLINK-20936 > URL: https://issues.apache.org/jira/browse/FLINK-20936 > Project: Flink > Issue Type: Improvement > Components: Connectors / Hive >Affects Versions: 1.12.0 > Environment: flink 1.12.0 > jdk 1.8 >Reporter: zhoukui >Priority: Major > > In flink1.12.0, I saw PartitionTimeExtractor is a constructor without > parameters, why not take the parameter “extractorPattern". See the source > code below: > {code:java} > @Experimental > public interface PartitionTimeExtractor extends Serializable { > String DEFAULT = "default"; > String CUSTOM = "custom"; > /** > * Extract time from partition keys and values. > */ > LocalDateTime extract(List partitionKeys, List > partitionValues); > static PartitionTimeExtractor create( > ClassLoader userClassLoader, > String extractorKind, > String extractorClass, > String extractorPattern) { > switch (extractorKind) { > case DEFAULT: > return new DefaultPartTimeExtractor(extractorPattern); > case CUSTOM: > try > { Class aClass = userClassLoader.loadClass(extractorClass); return > (PartitionTimeExtractor) aClass.newInstance(); } > catch (ClassNotFoundException | IllegalAccessException | > InstantiationException e) > { throw new RuntimeException( "Can not new instance for cus
[jira] [Updated] (FLINK-20936) Improvements in custom partition extractor
[ https://issues.apache.org/jira/browse/FLINK-20936?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] zhoukui updated FLINK-20936: Description: In flink1.12.0, I saw PartitionTimeExtractor is a constructor without parameters, why not take the parameter “extractorPattern". See the source code below: {code:java} @Experimental public interface PartitionTimeExtractor extends Serializable { String DEFAULT = "default"; String CUSTOM = "custom"; /** * Extract time from partition keys and values. */ LocalDateTime extract(List partitionKeys, List partitionValues); static PartitionTimeExtractor create( ClassLoader userClassLoader, String extractorKind, String extractorClass, String extractorPattern) { switch (extractorKind) { case DEFAULT: return new DefaultPartTimeExtractor(extractorPattern); case CUSTOM: try { Class aClass = userClassLoader.loadClass(extractorClass); return (PartitionTimeExtractor) aClass.newInstance(); } catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) { throw new RuntimeException( "Can not new instance for custom class from " + extractorClass, e); } default: throw new UnsupportedOperationException( "Unsupported extractor kind: " + extractorKind); } } } {code} Would it be more reasonable to bring a parameter construction method? as follows: try { Class aClass = userClassLoader.loadClass(extractorClass); Constructor declaredConstructor = aClass.getDeclaredConstructor(String.class); return (PartitionTimeExtractor) declaredConstructor.newInstance(extractorPattern); } catch (ClassNotFoundException | IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) { throw new RuntimeException( "Can not new instance for custom class from " + extractorClass, e); } was: In flink1.12.0, I saw PartitionTimeExtractor is a constructor without parameters, why not take the parameter “extractorPattern". See the source code below: {code} @Experimental public interface PartitionTimeExtractor extends Serializable { String DEFAULT = "default"; String CUSTOM = "custom"; /** * Extract time from partition keys and values. */ LocalDateTime extract(List partitionKeys, List partitionValues); static PartitionTimeExtractor create( ClassLoader userClassLoader, String extractorKind, String extractorClass, String extractorPattern) { switch (extractorKind) { case DEFAULT: return new DefaultPartTimeExtractor(extractorPattern); case CUSTOM: try { Class aClass = userClassLoader.loadClass(extractorClass); return (PartitionTimeExtractor) aClass.newInstance(); } catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) { throw new RuntimeException( "Can not new instance for custom class from " + extractorClass, e); } default: throw new UnsupportedOperationException( "Unsupported extractor kind: " + extractorKind); } } } Would it be more reasonable to bring a parameter construction method? as follows: try { Class aClass = userClassLoader.loadClass(extractorClass); Constructor declaredConstructor = aClass.getDeclaredConstructor(String.class); return (PartitionTimeExtractor) declaredConstructor.newInstance(extractorPattern); } catch (ClassNotFoundException | IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) { throw new RuntimeException( "Can not new instance for custom class from " + extractorClass, e); } {code} > Improvements in custom partition extractor > --- > > Key: FLINK-20936 > URL: https://issues.apache.org/jira/browse/FLINK-20936 > Project: Flink > Issue Type: Improvement > Components: Connectors / Hive >Affects Versions: 1.12.0 > Environment: flink 1.12.0 > jdk 1.8 >Reporter: zhoukui >Priority: Major > > In flink1.12.0, I saw PartitionTimeExtractor is a constructor without > parameters, why not take the parameter “extractorPattern". See the source > code below: > {code:java} > @Experimental > public interface PartitionTimeExtractor extends Serializable { > String DEFAULT = "default"; > String CUSTOM = "custom"; > /** > * Extract time from partition keys and values. > */ > LocalDateTime extract(List partitionKeys, List > partitionValues); > static PartitionTimeExtractor create( > ClassLoader userClassLoader, > String extractorKind, > String extractorClass, > String extractorPattern) { > switch (extractorKind) { > case DEFAULT: > return new DefaultPartTimeExtractor(extractorPattern); > case CUSTOM: > try > { Class aClass = userClassLoader.loadClass(extractorClass); return > (PartitionTimeExtractor) aClass.newInstance(); } > catch (ClassNotFoundException | IllegalAccessException | > InstantiationException e) > { throw new RuntimeException( "Can not new instance for custo
[jira] [Updated] (FLINK-20936) Improvements in custom partition extractor
[ https://issues.apache.org/jira/browse/FLINK-20936?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] zhoukui updated FLINK-20936: Priority: Major (was: Minor) > Improvements in custom partition extractor > --- > > Key: FLINK-20936 > URL: https://issues.apache.org/jira/browse/FLINK-20936 > Project: Flink > Issue Type: Improvement > Components: Connectors / Hive >Affects Versions: 1.12.0 > Environment: flink 1.12.0 > jdk 1.8 >Reporter: zhoukui >Priority: Major > > In flink1.12.0, I saw PartitionTimeExtractor is a constructor without > parameters, why not take the parameter “extractorPattern". See the source > code below: > @Experimental > public interface PartitionTimeExtractor extends Serializable { > String DEFAULT = "default"; > String CUSTOM = "custom"; > /** > * Extract time from partition keys and values. > */ > LocalDateTime extract(List partitionKeys, List > partitionValues); > static PartitionTimeExtractor create( > ClassLoader userClassLoader, > String extractorKind, > String extractorClass, > String extractorPattern) { > switch (extractorKind) { > case DEFAULT: > return new DefaultPartTimeExtractor(extractorPattern); > case CUSTOM: > try > { Class aClass = userClassLoader.loadClass(extractorClass); return > (PartitionTimeExtractor) aClass.newInstance(); } > catch (ClassNotFoundException | IllegalAccessException | > InstantiationException e) > { throw new RuntimeException( "Can not new instance for custom class from " + > extractorClass, e); } > default: > throw new UnsupportedOperationException( > "Unsupported extractor kind: " + extractorKind); > } > } > } > > Would it be more reasonable to bring a parameter construction method? as > follows: > try > { Class aClass = userClassLoader.loadClass(extractorClass); Constructor > declaredConstructor = aClass.getDeclaredConstructor(String.class); return > (PartitionTimeExtractor) declaredConstructor.newInstance(extractorPattern); } > catch (ClassNotFoundException | IllegalAccessException | > InstantiationException | NoSuchMethodException | InvocationTargetException e) > { throw new RuntimeException( "Can not new instance for custom class from " + > extractorClass, e); } > -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Updated] (FLINK-20936) Improvements in custom partition extractor
[ https://issues.apache.org/jira/browse/FLINK-20936?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] zhoukui updated FLINK-20936: Description: In flink1.12.0, I saw PartitionTimeExtractor is a constructor without parameters, why not take the parameter “extractorPattern". See the source code below: @Experimental public interface PartitionTimeExtractor extends Serializable { String DEFAULT = "default"; String CUSTOM = "custom"; /** * Extract time from partition keys and values. */ LocalDateTime extract(List partitionKeys, List partitionValues); static PartitionTimeExtractor create( ClassLoader userClassLoader, String extractorKind, String extractorClass, String extractorPattern) { switch (extractorKind) { case DEFAULT: return new DefaultPartTimeExtractor(extractorPattern); case CUSTOM: try { Class aClass = userClassLoader.loadClass(extractorClass); return (PartitionTimeExtractor) aClass.newInstance(); } catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) { throw new RuntimeException( "Can not new instance for custom class from " + extractorClass, e); } default: throw new UnsupportedOperationException( "Unsupported extractor kind: " + extractorKind); } } } Would it be more reasonable to bring a parameter construction method? as follows: try { Class aClass = userClassLoader.loadClass(extractorClass); Constructor declaredConstructor = aClass.getDeclaredConstructor(String.class); return (PartitionTimeExtractor) declaredConstructor.newInstance(extractorPattern); } catch (ClassNotFoundException | IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) { throw new RuntimeException( "Can not new instance for custom class from " + extractorClass, e); } was: In flink1.12.0, I saw PartitionTimeExtractor is a constructor without parameters, why not take the parameter “extractorPattern". See the source code below: @Experimental public interface PartitionTimeExtractor extends Serializable { String DEFAULT = "default"; String CUSTOM = "custom"; /** * Extract time from partition keys and values. */ LocalDateTime extract(List partitionKeys, List partitionValues); static PartitionTimeExtractor create( ClassLoader userClassLoader, String extractorKind, String extractorClass, String extractorPattern) { switch (extractorKind) { case DEFAULT: return new DefaultPartTimeExtractor(extractorPattern); case CUSTOM: try { Class aClass = userClassLoader.loadClass(extractorClass); return (PartitionTimeExtractor) aClass.newInstance(); } catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) { throw new RuntimeException( "Can not new instance for custom class from " + extractorClass, e); } default: throw new UnsupportedOperationException( "Unsupported extractor kind: " + extractorKind); } } } Would it be more reasonable to bring a construction method? as follows: try { Class aClass = userClassLoader.loadClass(extractorClass); Constructor declaredConstructor = aClass.getDeclaredConstructor(String.class); return (PartitionTimeExtractor) declaredConstructor.newInstance(extractorPattern); } catch (ClassNotFoundException | IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) { throw new RuntimeException( "Can not new instance for custom class from " + extractorClass, e); } > Improvements in custom partition extractor > --- > > Key: FLINK-20936 > URL: https://issues.apache.org/jira/browse/FLINK-20936 > Project: Flink > Issue Type: Improvement > Components: Connectors / Hive >Affects Versions: 1.12.0 > Environment: flink 1.12.0 > jdk 1.8 >Reporter: zhoukui >Priority: Minor > > In flink1.12.0, I saw PartitionTimeExtractor is a constructor without > parameters, why not take the parameter “extractorPattern". See the source > code below: > @Experimental > public interface PartitionTimeExtractor extends Serializable { > String DEFAULT = "default"; > String CUSTOM = "custom"; > /** > * Extract time from partition keys and values. > */ > LocalDateTime extract(List partitionKeys, List > partitionValues); > static PartitionTimeExtractor create( > ClassLoader userClassLoader, > String extractorKind, > String extractorClass, > String extractorPattern) { > switch (extractorKind) { > case DEFAULT: > return new DefaultPartTimeExtractor(extractorPattern); > case CUSTOM: > try > { Class aClass = userClassLoader.loadClass(extractorClass); return > (PartitionTimeExtractor) aClass.newInstance(); } > catch (ClassNotFoundException | IllegalAccessException | > InstantiationException e) > { throw new RuntimeException( "Can not new instance for custom class from " + > extractorClass, e); } > default
[jira] [Updated] (FLINK-20936) Improvements in custom partition extractor
[ https://issues.apache.org/jira/browse/FLINK-20936?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] zhoukui updated FLINK-20936: Description: In flink1.12.0, I saw PartitionTimeExtractor is a constructor without parameters, why not take the parameter “extractorPattern". See the source code below: @Experimental public interface PartitionTimeExtractor extends Serializable { String DEFAULT = "default"; String CUSTOM = "custom"; /** * Extract time from partition keys and values. */ LocalDateTime extract(List partitionKeys, List partitionValues); static PartitionTimeExtractor create( ClassLoader userClassLoader, String extractorKind, String extractorClass, String extractorPattern) { switch (extractorKind) { case DEFAULT: return new DefaultPartTimeExtractor(extractorPattern); case CUSTOM: try { Class aClass = userClassLoader.loadClass(extractorClass); return (PartitionTimeExtractor) aClass.newInstance(); } catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) { throw new RuntimeException( "Can not new instance for custom class from " + extractorClass, e); } default: throw new UnsupportedOperationException( "Unsupported extractor kind: " + extractorKind); } } } Would it be more reasonable to bring a construction method? as follows: try { Class aClass = userClassLoader.loadClass(extractorClass); Constructor declaredConstructor = aClass.getDeclaredConstructor(String.class); return (PartitionTimeExtractor) declaredConstructor.newInstance(extractorPattern); } catch (ClassNotFoundException | IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) { throw new RuntimeException( "Can not new instance for custom class from " + extractorClass, e); } was: In flink1.12.0, I saw PartitionTimeExtractor is a constructor without parameters, why not take the parameter “extractorPattern". See the source code below: @Experimental public interface PartitionTimeExtractor extends Serializable { String DEFAULT = "default"; String CUSTOM = "custom"; /** * Extract time from partition keys and values. */ LocalDateTime extract(List partitionKeys, List partitionValues); static PartitionTimeExtractor create( ClassLoader userClassLoader, String extractorKind, String extractorClass, String extractorPattern) { switch (extractorKind) { case DEFAULT: return new DefaultPartTimeExtractor(extractorPattern); case CUSTOM: try { Class aClass = userClassLoader.loadClass(extractorClass); return (PartitionTimeExtractor) aClass.newInstance(); } catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) { throw new RuntimeException( "Can not new instance for custom class from " + extractorClass, e); } default: throw new UnsupportedOperationException( "Unsupported extractor kind: " + extractorKind); } } } Would it be more reasonable to bring a construction method? as follows: Constructor declaredConstructor = aClass.getDeclaredConstructor(String.class); return (PartitionTimeExtractor) declaredConstructor.newInstance(extractorPattern); > Improvements in custom partition extractor > --- > > Key: FLINK-20936 > URL: https://issues.apache.org/jira/browse/FLINK-20936 > Project: Flink > Issue Type: Improvement > Components: Connectors / Hive >Affects Versions: 1.12.0 > Environment: flink 1.12.0 > jdk 1.8 >Reporter: zhoukui >Priority: Minor > > In flink1.12.0, I saw PartitionTimeExtractor is a constructor without > parameters, why not take the parameter “extractorPattern". See the source > code below: > @Experimental > public interface PartitionTimeExtractor extends Serializable { > String DEFAULT = "default"; > String CUSTOM = "custom"; > /** > * Extract time from partition keys and values. > */ > LocalDateTime extract(List partitionKeys, List > partitionValues); > static PartitionTimeExtractor create( > ClassLoader userClassLoader, > String extractorKind, > String extractorClass, > String extractorPattern) { > switch (extractorKind) { > case DEFAULT: > return new DefaultPartTimeExtractor(extractorPattern); > case CUSTOM: > try > { Class aClass = userClassLoader.loadClass(extractorClass); return > (PartitionTimeExtractor) aClass.newInstance(); } > catch (ClassNotFoundException | IllegalAccessException | > InstantiationException e) > { throw new RuntimeException( "Can not new instance for custom class from " + > extractorClass, e); } > default: > throw new UnsupportedOperationException( > "Unsupported extractor kind: " + extractorKind); > } > } > } > > Would it be more reasonable to bring a construction method? as follows: > try { > Class aClass = userClassLoader.loadClass(extractorClass); > Constructor declaredConstructor = > aClass.getDecla
[jira] [Created] (FLINK-20936) Improvements in custom partition extractor
zhoukui created FLINK-20936: --- Summary: Improvements in custom partition extractor Key: FLINK-20936 URL: https://issues.apache.org/jira/browse/FLINK-20936 Project: Flink Issue Type: Improvement Components: Connectors / Hive Affects Versions: 1.12.0 Environment: flink 1.12.0 jdk 1.8 Reporter: zhoukui In flink1.12.0, I saw PartitionTimeExtractor is a constructor without parameters, why not take the parameter “extractorPattern". See the source code below: @Experimental public interface PartitionTimeExtractor extends Serializable { String DEFAULT = "default"; String CUSTOM = "custom"; /** * Extract time from partition keys and values. */ LocalDateTime extract(List partitionKeys, List partitionValues); static PartitionTimeExtractor create( ClassLoader userClassLoader, String extractorKind, String extractorClass, String extractorPattern) { switch (extractorKind) { case DEFAULT: return new DefaultPartTimeExtractor(extractorPattern); case CUSTOM: try { Class aClass = userClassLoader.loadClass(extractorClass); return (PartitionTimeExtractor) aClass.newInstance(); } catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) { throw new RuntimeException( "Can not new instance for custom class from " + extractorClass, e); } default: throw new UnsupportedOperationException( "Unsupported extractor kind: " + extractorKind); } } } Would it be more reasonable to bring a construction method? as follows: Constructor declaredConstructor = aClass.getDeclaredConstructor(String.class); return (PartitionTimeExtractor) declaredConstructor.newInstance(extractorPattern); -- This message was sent by Atlassian Jira (v8.3.4#803005)