在storm中处理多个文件的最佳方法是什么

pftdvrlh  于 2021-06-21  发布在  Storm
关注(0)|答案(1)|浏览(323)

我是新的apachestorm,我想用storm来获得文件的相似性。我想得到文件夹“a”中所有文件的余弦和文件夹“b”中所有文件的余弦。你能帮我指出取得结果的方法吗。非常感谢。

dldeef67

dldeef671#

我不明白你所说的“所有文件的余弦”是什么意思,但一般来说,你可以把每个文件夹看作一个“流”。您可以让read-understand-format的spouta将foldera和spoutb中的文件发送到两个元组流中(我假设这两个文件夹之间存在一些差异,如编码、格式化等)。然后,您的处理程序可以“订阅”这些流。例如。,

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

另一方面,你的意思是从不同的文件夹中读取同一个喷口的两个不同示例
这不是一个好主意,因为喷口执行者的数量现在与您拥有的#文件夹有关。不可扩展。
负载分配可能会非常糟糕。
如果您仍然想这样做,您可以使用一个喷口的任务索引,使不同的喷口执行器具有稍微不同的行为(不同的含义是从不同的文件夹读取)
像这样,也许吧

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

相关问题