[ 
https://issues.apache.org/jira/browse/FLINK-20936?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17354955#comment-17354955
 ] 

luoyuxia edited comment on FLINK-20936 at 6/1/21, 9:08 AM:
-----------------------------------------------------------

[~zhkuile] Thanks for reporting it, but I think it's no need to take parameter 
“extractorPattern" to CustomPartTimeExtractor, it's only needed for 
DefaultPartTimeExtractor.

DefaultPartTimeExtractor partly implements the logic of converting partition's 
name, we still need the parameter “extractorPattern" to hint 
DefaultPartTimeExtractor how to do conversion, then the 
DefaultPartTimeExtractor will apply this pattern.

But in CustomPartTimeExtractor defined by user,  as the logic of converting 
partition's name to LocalDateTime has been fully implemented, there's no need 
to pass extra parameter “extractorPattern" to it.

 

have to know how to convert


was (Author: luoyuxia):
[~zhkuile] Thanks for reporting it, but I think it's no need to take parameter 
“extractorPattern" to CustomPartTimeExtractor, it's only needed for 
DefaultPartTimeExtractor.

DefaultPartTimeExtractor implement the logic of converting partition's name 
partly, we still need the parameter “extractorPattern" to hint 
DefaultPartTimeExtractor how to do conversion, then the 
DefaultPartTimeExtractor will apply this pattern.

But in CustomPartTimeExtractor defined by user,  as the logic of converting 
partition's name to LocalDateTime has been fully implemented, there's no need 
to pass extra parameter “extractorPattern" to it.

 

have to know how to convert

>  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
>              Labels: auto-deprioritized-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<String> partitionKeys, List<String> 
> 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); }



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to