[ 
https://issues.apache.org/jira/browse/KYLIN-3963?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

nichunen updated KYLIN-3963:
----------------------------
    Fix Version/s: v3.1.0

> Provide a custom serializer for PercentileCounter
> -------------------------------------------------
>
>                 Key: KYLIN-3963
>                 URL: https://issues.apache.org/jira/browse/KYLIN-3963
>             Project: Kylin
>          Issue Type: Sub-task
>          Components: Flink Engine
>            Reporter: vinoyang
>            Assignee: vinoyang
>            Priority: Major
>             Fix For: v3.1.0
>
>
> {{PercentileCounter}} contains an instance field of Type {{TDigest}} which is 
> not serializable, so it is marked as {{transient}}. By default, it triggers a 
> NPE when use Flink cube engine:
> {code:java}
> Caused by: org.apache.flink.client.program.ProgramInvocationException: Job 
> failed. (JobID: 8077ff0e0ff01a26f62b1babe90a34b7) at 
> org.apache.flink.client.program.rest.RestClusterClient.submitJob(RestClusterClient.java:268)
>  at org.apache.flink.client.program.ClusterClient.run(ClusterClient.java:487) 
> at org.apache.flink.client.program.ClusterClient.run(ClusterClient.java:475) 
> at 
> org.apache.flink.client.program.ContextEnvironment.execute(ContextEnvironment.java:62)
>  at 
> org.apache.kylin.engine.flink.FlinkCubingByLayer.execute(FlinkCubingByLayer.java:196)
>  at 
> org.apache.kylin.common.util.AbstractApplication.execute(AbstractApplication.java:37)
>  ... 18 more Caused by: 
> org.apache.flink.runtime.client.JobExecutionException: Job execution failed. 
> at 
> org.apache.flink.runtime.jobmaster.JobResult.toJobExecutionResult(JobResult.java:146)
>  at 
> org.apache.flink.client.program.rest.RestClusterClient.submitJob(RestClusterClient.java:265)
>  ... 23 more 
> Caused by: java.lang.NullPointerException at 
> org.apache.kylin.measure.percentile.PercentileCounter.writeRegisters(PercentileCounter.java:68)
>  at 
> org.apache.kylin.measure.percentile.PercentileSerializer.serialize(PercentileSerializer.java:70)
>  at 
> org.apache.kylin.measure.percentile.PercentileSerializer.serialize(PercentileSerializer.java:26)
>  at org.apache.kylin.measure.MeasureCodec.encode(MeasureCodec.java:76) at 
> org.apache.kylin.measure.BufferedMeasureCodec.encode(BufferedMeasureCodec.java:93)
>  at 
> org.apache.kylin.engine.flink.FlinkCubingByLayer$1.map(FlinkCubingByLayer.java:234)
>  at 
> org.apache.kylin.engine.flink.FlinkCubingByLayer$1.map(FlinkCubingByLayer.java:218)
>  at org.apache.flink.runtime.operators.MapDriver.run(MapDriver.java:103) at 
> org.apache.flink.runtime.operators.BatchTask.run(BatchTask.java:503) at 
> org.apache.flink.runtime.operators.BatchTask.invoke(BatchTask.java:368) at 
> org.apache.flink.runtime.taskmanager.Task.run(Task.java:704) at 
> java.lang.Thread.run(Thread.java:745)
> {code}
> So we should provide a customized serializer for {{PercentileCounter}}.



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

Reply via email to