Package tutorial.storm.trident.operations

Source Code of tutorial.storm.trident.operations.ParseTweet

package tutorial.storm.trident.operations;

import backtype.storm.tuple.Values;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import storm.trident.operation.BaseFunction;
import storm.trident.operation.TridentCollector;
import storm.trident.tuple.TridentTuple;
import tutorial.storm.trident.testutil.Content;
import tutorial.storm.trident.testutil.ContentExtracter;
import twitter4j.Status;
import twitter4j.TwitterException;
import twitter4j.User;
import twitter4j.json.DataObjectFactory;


/**
* @author Enno Shioji (enno.shioji@peerindex.com)
*/
public class ParseTweet extends BaseFunction {
    private static final Logger log = LoggerFactory.getLogger(ParseTweet.class);

    private ContentExtracter extracter;

    @Override
    public void execute(TridentTuple tuple, TridentCollector collector) {
        if(extracter == null) extracter = new ContentExtracter();

        String rawTweetJson = (String)tuple.get(0);
        Status parsed = parse(rawTweetJson);
        User user = parsed.getUser();

        for (Content content : extracter.extract(parsed)) {
            collector.emit(new Values(parsed, content, user));
        }
    }

    private Status parse(String rawJson){
        try {
            Status parsed = DataObjectFactory.createStatus(rawJson);
            return parsed;
        } catch (TwitterException e) {
            log.warn("Invalid tweet json -> " + rawJson, e);
            return null;
        }
    }
}
TOP

Related Classes of tutorial.storm.trident.operations.ParseTweet

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.