当前位置: 首页 > 知识库问答 >
问题:

暴风喷口-如何从文本文件读取所有行只一次,使用>1线程?

乐正晟
2023-03-14
 builder.setSpout("lines", new TestLineSpout(), 2);

当运行两个线程时,对于spout,文件的每一行都读取两次。

我是新手,我想知道处理这件事的最好方法?我可以将线程的数量减少到1个,或者修改spout,使每个线程读取不同的行--或者(如何)我需要使用TopologyContext参数?我不确定我是否错过了一个“Storm”的方式来解决这个问题?

共有1个答案

胡元忠
2023-03-14

西蒙,

Storm没有并行读取本地文件系统中存储的文件的功能。你可以写一个这样做的spout,但是除了小的测试和实验的目的之外,这会与Storm的体系结构相冲突。

以下是几点建议:

 类似资料:
  • 问题内容: 我正在编写一个解析文本文件的python脚本。此文本文件的格式是这样的,文件中的每个元素都使用两行,为了方便起见,我想在解析之前先读取这两行。可以用Python完成吗? 我想要一些类似的东西: 但这打破了这样的说法: ValueError:混合迭代和读取方法将丢失数据 问题答案: 这里有类似的问题。您不能混合使用迭代和readline,因此您需要使用其中之一。

  • 字符串表[]=新字符串[100];

  • 我已经开始使用storm,所以我使用本教程创建简单的拓扑 我的嘴是这样的 我的螺栓是这样的

  • 问题内容: 我可以从文件中读取内容,并且能够通过更改for循环中的数字来更改行数,但是我不希望那样并排显示文件中的所有数字。我需要它们全部一一随机掉下来。 问题答案: 我想你要打印的是 仅显示此列表(可能包含100条)中的前20条随机行

  • 问题内容: 我需要从文件夹中读取所有“ .txt”文件(用户需要选择此文件夹)。 请告知如何做? 问题答案: 您可以使用类,这是非常简单的用法 只需创建一个实例,您想要如何覆盖接受方法