Hi Xingcan,

option two RichMapFunction works , thanks a lot!


Thanks,
Steffen

> On 19. Jul 2018, at 13:59, Xingcan Cui <xingc...@gmail.com> wrote:
> 
> Hi Steffen,
> 
> You could make the class `TextAPIClient` serializable, or use 
> `RichMapFunction` [1] and instantiate all the required objects in its 
> `open()` method.
> 
> [1] 
> https://ci.apache.org/projects/flink/flink-docs-master/dev/api_concepts.html#rich-functions
>  
> <https://ci.apache.org/projects/flink/flink-docs-master/dev/api_concepts.html#rich-functions>
> 
> Best,
> Xingcan
> 
>> On Jul 19, 2018, at 6:56 PM, Steffen Wohlers <steffenwohl...@gmx.de 
>> <mailto:steffenwohl...@gmx.de>> wrote:
>> 
>> Hi all,
>> 
>> I’m new to Apache Flink and I have the following issue:
>> 
>> I would like to enrich data via map function. For that I call a method which 
>> calls an endpoint but I get following error message 
>> 
>> „The implementation of the MapFunction is not serializable. The object 
>> probably contains or references non serializable fields.
>>      at 
>> org.apache.flink.api.java.ClosureCleaner.clean(ClosureCleaner.java:99)“ …
>> „Caused by: java.io.NotSerializableException: 
>> com.aylien.textapi.TextAPIClient“
>> 
>> Is there a smart way to fix that issue?
>> 
>> Regards,
>> 
>> Steffen
>> 
>> 
>> Map Function:
>> DataStream<TweetSentiment> tweetSentimentDataStream = noRTDataStream
>>         .map(new MapFunction<Tweet, TweetSentiment>() {
>>             @Override
>>             public TweetSentiment map(Tweet tweet) throws Exception {
>>                 String polarity = "good";
>>                 polarity = test.testMethod();
>>                 polarity =  sentimentAnalysis.sentiment(tweet.getText());
>>                 return new TweetSentiment(tweet, polarity, 0);
>>             }
>>         });
>> 
>> Class:
>> 
>> public class SentimentAnalysis implements Serializable {
>> 
>>     private TextAPIClient _sentimentClient;
>> 
>>     public SentimentAnalysis () {
>>         _sentimentClient = new TextAPIClient(„xxx", „xxx");
>>     }
>> 
>>     public String sentiment(String text)  throws Exception{
>>         SentimentParams sentimentParams = new SentimentParams(text, null, 
>> null);
>>         Sentiment sentiment = _sentimentClient.sentiment(sentimentParams);
>> 
>>         return sentiment.getPolarity();
>>     }
>> (Analysis via Aylien)
> 

Reply via email to