什么是风暴中处理多个文件的最佳方式

时间:2015-07-22 17:25:41

标签: similarity apache-storm

我是新的apache风暴,我想用暴风来获得文件的相似性。我希望获得文件夹中所有文件的余弦" A"文件夹中的所有文件" B"。你能帮助我展示获得结果的方法吗? 非常感谢。

1 个答案:

答案 0 :(得分:0)

我不明白你所说的所有文件的余弦是什么意思,但总的来说, 您可以将每个文件夹视为'流'。你可以让readout文件中的spoutA发出文件夹,它们将folderB中的文件发送到两个元组流中(我假设两个文件夹之间存在一些差异,如编码,格式化等)。然后您的处理螺栓可以订阅'到那些溪流。例如,

bolt.fieldsGrouping(spoutA, streamname, new Fields("field_in_stream"));
bolt.fieldsGrouping(spoutB, streamname, new Fields("field_in_stream"));

另一方面,如果你想从不同的文件夹中读取同一个喷口的两个不同实例,那么

  • 不是一个好主意,因为现在有喷口执行器的数量 绑定到你拥有的#folders。不可扩展。
  • 负载分配可能会非常糟糕。
  • 如果你还想这样做,你可以 使用spout的task-index来使用不同的spout执行器 略有不同的行为(从不同的文件夹读取不同的含义)

像这样,也许

public class MySpout extends BaseRichSpout {
     public void open(Map conf, TopologyContext context,
                SpoutOutputCollector collector) {
                System.out.println("Spout Index = " + context.getThisTaskId());
           }
     }