00:00
好,同学们,接下来我们给大家讲第五章啊,Stream的输出,那咱们其实咱们之前一直呀,都给大家演示了一个叫print,那个print不就是输出的意思嘛,对不对,所以啊,对于我们来讲,这个其实所谓的输出呢,就看你输出的目的地了,那你是在控制台啊,还是想保存成文件呢?诶它都有相应的方法啊好,他这里说了啊,输出的操作指定了对流数据进行转换操作得到的数据所需要执行的操作,那么与RDD的惰性求值类似,如果一个stream以及它转换生成的stream都没有被执行输出操作,那么这些stream就不会被求职,那么如果我们的环境当中没有设定输出操作,整个contest都不会被启动,那么我们这里给大家演示一下,来咱们关掉,关掉以后呢,我们来拷贝,然后写上一个零七啊零七,然后呢,这里我们叫output啊输出嘛,嗯,咱们叫out啊来点击OK,点击完成以后,同学看看我,别的不管它,我先。
01:00
现在就把这个print给它掉。好了,我注掉以后,现在呢,我们这边给它来启动,启动完成以后,现在我们来运行。运行的时候,因为我们刚才呀,我们说我们需要连接咱们的主机,连接咱们的端口号,对吧,那我们现在准备去输出内容,可是你把数据我传过去了,你那边也采集到了,可是我该如何做处理呢?不知道,所以呢,大家听以到这边就出现了问题,他就告诉你了,叫no outputs res,什么意思呢?就是你没有输出的操作被注册,那我就不知道你想干嘛,所以啊,它这边就会提示错误,这个跟咱们离线那个还不太一样,离线那个数据啊,顶多什么呢,咱们就是不做了,对吧,但你数据还在那儿,但是我们流逝数据处理当中,你如果不做操作的话,数据是不是源源不断的过来,可是你什么都没有做,那不是不是就丢失数据的感觉了,对不对,所以这个地方是不能不输出的,它必须要出现这个输出的操作,所以呢,他这里就报错了,所以这个同学们需要了解一下,如果你没有是不行的,那么我们到底都有哪些输出呢?那么我们最常用的就是那个print,它会。
02:09
打印我们的那个时间戳对吧?当然了,它这里面还有什么save as object,这个咱们之前在RD当中都示了类的操作啊,然后这边呢,还有一个叫saveop,就是保存成我们的相关的一些操作啊,还有呢,叫for r DD,这个操作是比较通用的,这句话什么意思呢?来把这个先关掉啊来那这里呢,我们也稍微的充一下吧,就是我们的Spark streaming,它如果啊没有我们的输出操作啊,那么我们会提示出现啊,会提示错误,哎,就这个意思,好,把这个呢,我们放到这里啊,OK,那行,那我们接着下来把这个关掉,然后再拷贝,拷贝以后呢,我们写上一个,一拿过来点击OK啊,OK,好,放过来之后呢,接下来我们这个地方呢,我们就咱们这个不要了,咱们这个不要了,咱们接着往下,咱们叫window,咱们叫DSDR,它有一个方法,这个方法叫。
03:09
RDD,它等同于拿到了最底层的那个RDD来进行操作,哎,就是这样的,就是我把原始的RDD给你,你想怎么做你就怎么做,因为RDD的功能会更加丰富嘛,对不对?哎,所以啊,就是有这样的一个方法叫for it r DD里面想做什么就做什么啊就这意思了,嗯,所以啊,它是一个比较通用的一个我们的出出操作,这个在我们SPA Jim命当中用的会非常多,但是呢,我们这里也强调一下,它就不会出现那个时间戳了啊,这里我们说一下咱们的这个for each r DD,它不会出现那个时间戳,经常有同学就问说,老师你看诶,我用这个方法之后,怎么那个时间戳没有了,等半天没出来,因为那个时间戳啊,其实就是那个print会出现,咱们这儿就得自己写了啊,这个你不要给他什么说弄不明白对吧,你要弄不明白的话,这个老师怎么回事,出现错误了吧,其实没有出现错误啊,是那个方法使用的问题,那么我们在这里呢,他也说了啊,我们在。
04:09
这RDD当中啊,可以重用咱们RDD的所有操作,但是啊,有一个问题什么呢?就是要考虑到它这个RDD的使用问题,这个呢我们后面会跟大家说到,就是现在跟大家说,大家体会不出来,比方说连接不能写在driver层面,我们如果写在for下面,这个每个都创建得不偿失,这个呢可能大家呀意识不到,所以我们这里呢,就先知道有这么回事,就有个for each r DD,它底层用的是RTD来做操作就够了,别的先不用管它好不好,同学们,OK,咱们先说到这里啊。
我来说两句