【问题标题】:Apache Storm, Twitter阿帕奇风暴,推特
【发布时间】:2015-07-27 21:27:50
【问题描述】:

我正在通过风暴螺栓使用 twiiter4j.properties 处理 twitter 推文。我的拓扑结构如下:

    TopologyBuilder builder = new TopologyBuilder();

    builder.setSpout("KafkaSpout", new KafkaSpout(kafkaConfig), 2).setNumTasks(4);
    builder.setBolt("Preprocesing", new preprocessBolt2(), 2)
            .setNumTasks(4).shuffleGrouping("KafkaSpout");


    builder.setBolt("AvgScoreAnalysis",
            new AvgScoringBolt(), 4).setNumTasks(8)
            .fieldsGrouping("Preprocesing",new Fields("tweetId"));



    builder.setBolt("PrinterBolt", new LocalFile(), 6).setNumTasks(4)
            .shuffleGrouping("AvgScoreAnalysis");

我从 KafkaSpout 获取推文并将其发送到 Bolt 进行预处理,我的问题是在我调用 S3 的 avgScoring 中,因为我有每个用户的 csv 并计算每个用户的每个单个用户的得分鸣叫。我有 100 个用户意味着我的平均得分必须为 s3 中所有用户数量的每条推文计算平均得分。速度很慢,如何提高这个螺栓的性能,文件中有这么多重复项,如何删除重复项?

【问题讨论】:

    标签: twitter apache-storm


    【解决方案1】:

    如果您想要高性能,从 AvgScoringBolt 调用 S3 并不是一个好主意:除非您使用某些标准过滤推文,否则无法为每条推文建立与 S3 的连接并且仍然每秒解析数千条推文。 由于只有100个用户,也许你可以在应用程序开始时下载用户的CVS,在bolt内部进行计算而不连接到S3(使用下载的CSV),并定期将更新的CSV上传到S3以获得一个与 S3 松散同步。我不知道这种情况是否符合您的要求。

    【讨论】:

    • 感谢您的回复,目前有 100 个用户,但数量还在不断增长..我已经在 preprocessBolt 中过滤推文(删除空推文,删除主题标签...)有什么流程而不是下载 csv 文件。
    • 这些 CSV 文件有多大?是不是不能在本地下载使用?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多