我是新的apachestorm,我想用storm来获得文件的相似性。我想得到文件夹“a”中所有文件的余弦和文件夹“b”中所有文件的余弦。你能帮我指出取得结果的方法吗。非常感谢。
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()); } }
1条答案
按热度按时间dldeef671#
我不明白你所说的“所有文件的余弦”是什么意思,但一般来说,你可以把每个文件夹看作一个“流”。您可以让read-understand-format的spouta将foldera和spoutb中的文件发送到两个元组流中(我假设这两个文件夹之间存在一些差异,如编码、格式化等)。然后,您的处理程序可以“订阅”这些流。例如。,
另一方面,你的意思是从不同的文件夹中读取同一个喷口的两个不同示例
这不是一个好主意,因为喷口执行者的数量现在与您拥有的#文件夹有关。不可扩展。
负载分配可能会非常糟糕。
如果您仍然想这样做,您可以使用一个喷口的任务索引,使不同的喷口执行器具有稍微不同的行为(不同的含义是从不同的文件夹读取)
像这样,也许吧