Spark 编程实战之经典算法TOP K
发表于:2024-11-15 作者:千家信息网编辑
千家信息网最后更新 2024年11月15日,Top KTop K算法有两步,一是统计词频,二是找出词频最高的前K个词。1.实例描述假设取Top 1,则有如下输入和输出。输入:Hello World Bye WorldHello Hadoop B
千家信息网最后更新 2024年11月15日Spark 编程实战之经典算法TOP K
Top KTop K算法有两步,一是统计词频,二是找出词频最高的前K个词。1.实例描述假设取Top 1,则有如下输入和输出。输入:Hello World Bye WorldHello Hadoop Bye HadoopBye Hadoop Hello Hadoop输出:词Hadoop 词频42.设计思路首先统计WordCount的词频,将数据转化为(词,词频)的数据对,第二个阶段采用分治的思想,求出RDD每个分区的Top K,最后将每个分区的Top K结果合并以产生新的集合,在集合中统计出Top K的结果。每个分区由于存储在单机的,所以可以采用单机求TopK的方式。本例采用堆的方式。也可以直接维护一个含K个元素的数组,感兴趣的读者可以参考其他资料了解堆的实现。3.代码示例Top K算法示例代码如下:import org.apache.spark.SparkContextimport org.apache.spark.SparkContext._object TopK {def main(args:Array[String]) {/*执行WordCount,统计出最高频的词*/val spark = new SparkContext("local", "TopK",System.getenv("SPARK_HOME"), SparkContext.jarOfClass(this.getClass))val count = spark.textFile("data").flatMap(line =>line.split(" ")).map(word =>(word, 1)).reduceByKey(_ + _)/*统计RDD每个分区内的Top K查询*/val topk = count.mapPartitions(iter => {while(iter.hasNext) {putToHeap(iter.next())}getHeap().iterator}).collect()/*将每个分区内统计出的TopK查询合并为一个新的集合,统计出TopK查询*/val iter = topk.iteratorwhile(iter.hasNext) {putToHeap(iter.next())}val outiter=getHeap().iterator/*输出TopK的值*/println("Topk 值 :")while(outiter.hasNext) {println("\n 词频:"+outiter.next()._1+" 词:"+outiter.next()._2)}spark.stop()}}def putToHeap(iter : (String, Int)) {/*数据加入含k个元素的堆中*/……}def getHeap(): Array[(String, Int)] = {/*获取含k个元素的堆中的元素*/val a=new Array[(String, Int)]()……}4.应用场景Top K的示例模型可以应用在求过去一段时间消费次数最多的消费者、访问最频繁的IP地址和最近、更新、最频繁的微博等应用场景。
词频
统计
元素
数据
示例
应用
查询
输出
算法
频繁
代码
单机
场景
方式
结果
消费
输入
最高
中统
兴趣
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
机器视觉是用什么软件开发的
网信办关于新型网络安全防控报告
bim软件开发工程基础知识
怀旧服服务器部落大乱斗
金融网络安全文献
网络技术挑战赛网络安全方向
it网络技术要求
foxhole服务器
4k网络安全教育手抄报
网络安全保密保证
数据库应用的安全性
软件开发组件化
数据库安全性实验报告心得
怎么创造一个国际服服务器
阿里云数据库单表能存多少条数据
多维数据库操作训练启示
菏泽app定制软件开发哪家靠谱
菜鸟包裹侠服务器响应超时怎么办
信阳哪里有计算机网络技术教程
洗衣智能柜软件开发公司
怎么拦截本机发送到服务器的数据
宝山区上门软件开发业务流程
南城金蝶管理软件开发
郑州软件开发员工资
分屏软件开发
数据库分Orale
计算机应用网络技术考研方向
杭州萧山网络安全招聘
近10年软件开发市场
网络技术学院教师招聘