温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
无论是从元素直接读取数据,还是从集文件当中读,我们得到其实都是有的数据集,相当于是调用了datapi去进行了有流的处理。那我们知道在真正的应用场景当中,流处理的场景。数据应该是源源不断产生,来一个就要实时的处理一个,这才是真正流处理的定义。那在这种场景下,我们显然就不能从文件或者说像测试场景里边,直接在代码当中定义一个,这样来读取数据了。那这个时候数据源又应该怎么定义?我们应该从哪里读取的数据呢?最简单的方式之前我们在workout里边也已经看到了,那就是可以直接定义一个socket文本流,读取socket文本读到的这就是一个标准的流数据。那当然了,这种方式调用的话也非常的简单,我们可以再来进行一个测试。
01:06
第四种方法。从。Socket。文本流中读取。读取的方式直接调用socket stream这样一个方法,而里面要传入两个参数,一个是当前的host name,那我们还是直接传ADO102。我们可以在虚拟机叫做度102的这台虚拟机上去使用NC命令去启动这样一个socket文本流的服务,那么对应的还有端口号,另外一个参数我们可以定义成7777。当前这个可以叫做STREAM4,这是我们的一个基本定义,为了看到结果,可以把前面的先注掉。STREAM4做一个打印输出。有了这一部分代码,那接下来我们就可以运行去测试了。在测试之前,先要把杜102这台机器打开,启动NC,用一个NC命令去启动一个socket服务。
02:13
这样的话,接下来我们就可以运行代码来进行测试。那测试的过程也非常的简单,当前我们真正意义上是一个流式的输入,所以很很显然。启动执行之后不会直接有任何的输出,因为我们还没有输入数据啊,那当前我们可以直接按照之前文件里面写入的。把Mary第一条数据。直接copy过来。然后我们就可以看到,对应在。控制台这边就直接得到了一条Mary访问数据的原样输出,一模一样,其实整体这个输出的结果跟前面我们测试STEM1从文文件中读取数据的结果是完全一样的,因为我们文本流里读出来也是一个string数据,每输入一行数据对应的就是一条stream类型的流数据。接下来我们要进行处理,这里我们是直接控制台打印,当然就是原样的一个文本了。
03:16
那对应后边我们还可以继续输入Alice的访问数据。粘贴过来,那么对应着这里就会再次出现一条对应的数据啊,那如果说我们再来一条Bob的数据。这里就会。对应一条报的数据,这就是我们所说的socket文本流,那当然了,这种方式它吞吐量非常的小,稳定性也比较差,因为依赖于我们这里边直接启动用NC命令启动的这样一个Sony服务啊,那一般情况呢,我们主要也是用来做流式数据的测试,真正的生产环境里边显然不可能用这样的一种方式去作为真正意义上的数据源。
我来说两句