flink-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Yassin Marzouki <yassmar...@gmail.com>
Subject Re: Variable not initialized in the open() method of RichMapFunction
Date Fri, 22 Jul 2016 15:28:20 GMT
Thank you Stephan and Kim, that solved the problem.
Just to make sure, is using a MapFunction as in the following code any
different? i.e. does it initialize the objectMapper for every element in
the stream?

.map(new MapFunction<String, Request>() {

    private ObjectMapper objectMapper = new ObjectMapper();

        @Override
             public Request map(String value) throws Exception {
                 return objectMapper.readValue(value, Request.class);
        }
})

On Fri, Jul 22, 2016 at 5:20 PM, Dong iL, Kim <kim.same@gmail.com> wrote:

> oops. stephan already answered.
> sorry. T^T
>
> On Sat, Jul 23, 2016 at 12:16 AM, Dong iL, Kim <kim.same@gmail.com> wrote:
>
>> is open method signature right? or typo?
>>
>> void open(Configuration parameters) throws Exception;
>>
>> On Sat, Jul 23, 2016 at 12:09 AM, Stephan Ewen <sewen@apache.org> wrote:
>>
>>> I think you overrode the open method with the wrong signature. The right
>>> signature would be "open(Configuration cfg) {...}". You probably overlooked
>>> this because you missed the "@Override" annotation.
>>>
>>> On Fri, Jul 22, 2016 at 4:49 PM, Yassin Marzouki <yassmarzou@gmail.com>
>>> wrote:
>>>
>>>> Hi everyone,
>>>>
>>>> I want to convert a stream of json strings to POJOs using Jackson, so I
>>>> did the following:
>>>>
>>>> .map(new RichMapFunction<String, Request>() {
>>>>
>>>>     private ObjectMapper objectMapper;
>>>>
>>>>         public void open() {
>>>>             objectMapper = new ObjectMapper();
>>>>         }
>>>>
>>>>         @Override
>>>>              public Request map(String value) throws Exception {
>>>>                  return objectMapper.readValue(value, Request.class);
>>>>         }
>>>> })
>>>>
>>>> But this code gave me a NullPointerException because the objectMapper
>>>> was not initialized successfully.
>>>>
>>>> 1. Isn't the open() method supposed to be called before map() and
>>>> initialize objectMapper?
>>>> 2. I figured out that initializing objectMapper before the open()
>>>> method resolves the problem, and that it works also with a simple
>>>> MapFunction. In that case, is there an advantage for using a
>>>> RichMapFunction?
>>>>
>>>> Best,
>>>> Yassine
>>>>
>>>
>>>
>>
>>
>> --
>> <A HREF="http://www.kiva.org" TARGET="_top">
>> <IMG SRC="http://www.kiva.org/images/bannerlong.png" WIDTH="460"
>> HEIGHT="60" ALT="Kiva - loans that change lives" BORDER="0"
>> ALIGN="BOTTOM"></A>
>>
>
>
>
> --
> <A HREF="http://www.kiva.org" TARGET="_top">
> <IMG SRC="http://www.kiva.org/images/bannerlong.png" WIDTH="460"
> HEIGHT="60" ALT="Kiva - loans that change lives" BORDER="0"
> ALIGN="BOTTOM"></A>
>

Mime
View raw message