Thanks,Fabian.
I got around the issue by moving the logic for the
DropwizardHistogramWrapper -a non serializable class into the
ProcessWindowFunction's open() function.



On Fri, Jun 7, 2019 at 12:33 AM Fabian Hueske <fhue...@gmail.com> wrote:

> Hi,
>
> There are two ways:
>
> 1. make the non-serializable member variable transient (meaning that it
> won't be serialized) and check in the aggregate call if it has been
> initialized or not.
> 2. implement your own serialization logic by overriding readObject() and
> writeObject() [1].
>
> Best, Fabian
>
> [1]
> https://howtodoinjava.com/java/serialization/custom-serialization-readobject-writeobject/
>
> Am Do., 6. Juni 2019 um 23:04 Uhr schrieb Vijay Balakrishnan <
> bvija...@gmail.com>:
>
>> HI,
>> I have a class defined :
>>
>> public class MGroupingWindowAggregate implements AggregateFunction.. {
>>> private final Map<String, Object> keyHistMap = new TreeMap<>();
>>> }
>>>
>> In the constructor, I initialize it.
>>
>>> public MGroupingWindowAggregate() {
>>> Histogram minHist = new Histogram(new
>>> SlidingTimeWindowReservoir(timeIntervalL, TimeUnit.MINUTES));
>>> org.apache.flink.metrics.Histogram minHistogram = new
>>> DropwizardHistogramWrapper(minHist);
>>> Map<String, org.apache.flink.metrics.Histogram> intervalHistMap = new
>>> TreeMap<>();
>>> intervalHistMap.putIfAbsent(interval, minHistogram);
>>> keyHistMap.putIfAbsent(operationKey, intervalHistMap);
>>> }
>>>
>> When trying to use it in the add() method of AggregateFunction, it fails
>> saying:
>> NotSerializableException:
>> org.apache.flink.dropwizard.metrics.DropwizardHistogramWrapper
>>
>> Tried to wrap DropwizardHistogramWrapper inside a serializable Object
>> with Composition but that also didn't work.
>>
>> Looked at using RichFunction open() based on Stephan's advise here.
>> https://stackoverflow.com/questions/34118469/flink-using-dagger-injections-not-serializable
>> But cannot use RichFunction with AggrgeateFunction or use
>> RichAggregateFunction
>>
>> How can I use the DropwizardHistogramWrapper -a non serializable class
>> inside my AggregateFunction ? Trying to use DropwizardHistogramWrapper to
>> get some Histogram percentile stats without re-inventing the wheel.
>>
>> TIA,
>> Vijay
>>
>

Reply via email to