00:00
好,同学们,我们接下来我们接着看啊,还看这个我们的map的算子,Map的方法,那么从我们的函数签名上来看,它的使用方式是map,然后增加一个我们的函数,然后呢,返回一个新的RDD啊,这是我们转换的概念,对吧?嗯。它的函数的说明说了,将处理的数据呢,逐条进行映射转换,这里的转换可以是类型的转换,也可以是值的转换,其实啊,你甭管是什么样的转换,它都是可以把A变成B的感觉,对不对?诶,这是没有任何问题的啊好,接着往下,下面呢有一个小功能,他说了从我们的服务器日志当中,哎,获取用户请求的URL资源路径,因为在我们实际的需求当中啊,给你的数据可能很多,但你真正要的数据可能比较少,那这样的话,我要把一个比较大的数据呢,转换成小的数据,这样的话有利于我们的统计分析,可以提高我们的效率,对不对,所以啊,咱们来一块看一看啊,这个叫做阿帕奇log,在我们给大家准备的这个资料当中啊,我们找一下,在这里呢,我们资料资料里面有一个咱们的date里面有个叫阿帕奇点log啊,然后你要把它拷贝到咱们的这个位置来,拷贝到咱们的date里面。
01:17
放过来以后,大家会发现这个就是我们的服务器日志信息啊,里面包含了一些请求的地址和资源,还有一些我们的时间戳,诶我要想办法按照我的要求把它请求的ul资源路径给它取过来,那这个我们该怎么办呢?来同学们把这个呢,我们给它关掉啊呃,关掉以后我们来拷贝啊拷贝,然后写上一个咱们的test啊,写上一个test,这是我们对这个函数的一个操作啊。来我们拷贝点击OK啊好放过来,放过来以后,那么首先第一个把这个该去的都去掉了,去掉以后按照咱们刚才的说法呢,咱们得读取一份文件了,所以SC咱们叫做点叫text file,然后写上叫dates,然后呢,阿帕奇点lock,好,我们写上叫RDD,那么你叫RDD以后,那我现在呢,想把它的数据拿到,其实这个地方是不是已经拿到了,而且是一行一行拿到的吧。
02:16
但是我们想要的是一行吗?不是,这是其中的一部分,所以我要把一个长的啊,咱们叫长的字符串干嘛呢?把它转换成短的啊,短的字符串,这是我们需要去做的啊,那来吧,RDD点,我们叫做map,诶,我们叫做map,那么你叫做map,以后你拿到的每一个数据不就是一行吗?那好,那么你的一行我们不要那么多,咱们只要其中的一部分,那我们来看看这个数据。嗯,他这里说了啊,咱们这里呢,来大家看一行很长,但是我们其实只要最后这一部分,对吧?这是我们的请求的支援路径,那我会发现呢,他们中间好像是有格式的呀,每个数据之间是用空格给它隔开的,那么这个呢是IP地址,这个横线呢,表述的是用户的什么ID啊,Session ID之类的,然后这个呢,表述的是我们的时间戳,他访问的时间戳,这个呢是我们的时区,这个是请求方式,这个是我们的地址,所以我们只要最后一个,那前面的我们就不要了,那前面不要老师,那我该怎么写呢?对不对,你是不是可以通过位置来截取呢?其实不行,不行的原因是在哪儿呢?是因为前面的长度是不固定的,如果前面的长度是固定的情况下,我可以从字符串一行当中找这个位置,但是IP地址这能固定吗?不见得固定对不对,所以这样的话就不方便,哎,那我发现另外一个现象,他们。
03:51
数据和数据之间好像是有空格隔开的呀,那我如果将这一行的字符串用空格隔开的话,那是不是取它就容易一些了呢?所以我们来看一看,来我现在呢,用些个line,然后点,点了以后我们叫做split,然后用一个空格隔开你隔开以后你得到的就是我们的多条数据。
04:17
那我来分析一下吧,这个如果是零啊,它是一,它是二,它是三,它是四,它是五,那么它就是六了,所以啊,咱们需要的其实就是我们的六,好了,那你这么写完以后,咱们来写上一个点叫VAR回车,回车以后大家可以看到这个就是我们那个map RD转换之后的RDD,那么你这个地方的字符串就是我们的那个请求的资源路径,好我们来验证看是不是点我们这里呢,写上咱们叫collect啊,咱们的collect,然后呢,点一下我们的for it,我们的print,行了,那我现在呢运行。
05:01
好了,大家有没有发现我们的地址已经打印在我们控制台上了吧?那这就OK了啊,这个小的功能我们就算是实现了啊。
我来说两句