Spark shell 词频统计和统计PV的心得是什么

这期内容当中小编将会给大家带来有关Spark shell 词频统计和统计PV的心得是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。所有过程按本人实验并以本人能够接受的方式理解的。样本数据[hadoop@h301 ~]$ cat hh.txthello,worldhello,hadoophello,oraclehadoop,oraclehello,worldhello,hadoophello,oraclehadoop,oracle词频统计,及其按单词数量倒序排序过程及其详解1.将文件加载成RDDScala> var file=sc.textFile(“hdfs://h301:9000/hh.txt”)2.将每行按逗号拆分,结果装载到一个数组中,每次提取一个单词, _代表每次输入内容的占位符Scala> val h2=file.flatMap(_.split(“,”))3.将数组中的每个元素装载到map方法中执行统一的处理任务,将输入的每个单词返回成k,v 键值对,reduceByKey()方法只对value只运行括号内的方法进行迭代计算_+_ 代表累加,返回的是k和进行过迭代计算的v 键值对Scala> val h3=h2.map(x=>(x,1)).reduceByKey(_+_)4.再用第二个map接收上一步的k,v键值对进行交换位置输出例如:输入的是(“hello”,5)变成(5,”hello”)Scala> val h4=h3.map(_.2,_.1)5.将结果按key值排序Scala> val h5=h5.sortByKey(false) false=倒序 true=升序6.在使用map函数将拍好序的键值对进行交换例如:(5,”hello”) (4,”hadoop”) 变成(“hello”,5)(“hadoop”,4)Scala> val h6=h5.map(_.2,_.1)7.到此已经完成了词频统计并按照单词数量的降序进行了排列已经完成下一步可以将结果输出到文件夹中,注意是一个目录Scala> h6.saveAsTextFile(“hdfs://h201:9000/output1″)上述所有操作拆分为了方便理解,可以将所有操作合成一条代码:如下Scala > val wc = file.flatMap(_.split(“,”)).map(x=>(x,1)).reduceByKey(_+_).map(x=>(x._2,x._1)).sortByKey(false).map(x=>(x._2,x._1)).saveAsTextFile(“hdfs://h301:9000/output1”)flatMap() 与 map() 的区别flatMap() 香港云主机与 map() 都是对输入的每行内容做同样的操作但是产生的结果不相同;例如样本:hello,worldhello,hadoophello,oracle将文件导入成RDD =》var file=sc.textFile(“hdfs://xxx:9000/xx.txt”)同样是用split方法按逗号分隔Var fm=file.flatMap(_.split(“,”)) 每行按逗号分隔后产生的结果解将每个单词放在一个集合中,下面如果使用fm中的内容是每次只会导入一个单词:用java表示就是{‘hello’,’world’,’hello’,’hadoop’,’hello’,’oracle’} 相当于一维数组Var m=file.map(_.split(“,”)) 每行按逗号分隔后产生的结果是将每行的变成一个字符串数组,再放到一个大的结果集中,下面如果使用m中的内容每次导入一个数组:用java表示就是{{‘hello’,’world’},{‘hello’,’hadoop’},{‘hello’,’oracle’}} 相当于二维数组这在使用Apache日志统计PV时很有用例如日志格式如下:123.23.4.5 – – xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx23.12.4.5 – – xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx我们只需要取出按空格分隔的第一个列即可 这是使用flatMap就不合适了我们可以用mapSalca > var file=sc.textFile(“hdfs://h301:9000/access.log”)Salca> var h2=file.map(_.split(“”,2)) #按空格分隔最多两列Salca> var h3=h2.map(x=>(x(0),1)) #输入的数组去第0列,即可取出IPSalca> var h4=h3.reduceByKey(_+_) #统计每个链接的登录次数下面就是排序和保存在这里就不在重复了。上述就是小编为大家分享的Spark shell 词频统计和统计PV的心得是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注开发云行业资讯频道。

相关推荐: 如何进行Go语言及Beego框架环境搭建

如何进行Go语言及Beego框架环境搭建,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在开始环境搭建之前,我们先一起来看看:Go有什么优势:不用虚拟机,它可直接编译成机器码,除了glibc外没…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 09/23 18:31
下一篇 09/23 18:31

相关推荐

发表评论

您的电子邮箱地址不会被公开。