开发者学堂课程【大数据Spark2020最新课程(知识精讲与实战演练)第二阶段:RDD 的缓存_缓存的意义_过程代码】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/689/detail/11997
RDD 的缓存_缓存的意义_过程代码
步骤
第一步,创建 SC 。
第二步,直接复制这个步骤去一个一个实现读取文件。
第三步,取出 IP ,并且赋予初始词频。
第四步,数据清洗。
第五步,统计 IP 出现的次数,其实就是一个聚合操作。
第六步,统计出现次数最少的 IP 。
第七步,得出结论。但是这一点会有一点特殊,是要得出两个结论,一个是统计最少的这个出现次数,还有一个是出现最多的次数。
首先,创建 SC ,就是 vial conf=new SparkConf(),new SparkConf 以后要设置两个参数,第一个叫做 set App Name,App Name 可以指定叫做 cache 然后 Prepare 。
接下来要设置一个 Master ,这个 Master 需要去指定在本地运行使用六条线程。
接下来再取 val sc 创建出 spark context。这个 Context 当中要接收一个 conf 参数。
读取文件可以直接使用 sc.textFile 直接把这个位置放进来,这个路径放进来。
接下来赋予初始词频,去定义一个 countRdd 。
接下来就是 Source.map , map 要按空格来进行分割。
取出第一项就是 IP ,取出 IP 以后,要返回一个元组。去看一下 map ,到 item 中先 Split ,按照一个空格取出第一项 Split ,接下来拿到这一项以后返回一个元组。返回一个后边是一的元祖,这样的话就少写了一个 map 算子。整体上的这个效率会更高一些。
接下来进行过滤来进行数据清洗,然后使用 countRDD 来进行一个 filter。Filter 拿到 Item ,Filter 的作用就是想去看K是不是不为空。
接下来判断一下 item._,这个东西就是下划线一元素当中的第一项,然后通过 StringUtils 导入 org.apache.commons.lang3这个包然后 isEmpty ,最终要的是一个 is not empty 。数据清洗就完成了。
数据清洗完成以后要统计 IP 出现的次数,接下来把他复制一下,拿到 cleanRDD ,统计过清洗过的 RDD 来进行一次reduceByKey 操作。
统计以后函数当中还有两个参数,第一个 curr ,第二个 agg 局部聚合结果,然后是 curr+agg ,他的意义是按照 k 来进行一次 reduce ,把其中的所有1加起来这样的话就得出了 IP 以及 IP 出现的次数。