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