Spark Streaming模拟网络热搜词和黑客过滤

2023-12-10 16:59

本文主要是介绍Spark Streaming模拟网络热搜词和黑客过滤,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.网络热搜词

* Created by Jason Shu on 2017/8/5.      */      
import org.apache.spark.streaming.StreamingContext      
import org.apache.spark.SparkConf      
import org.apache.spark.streaming.Seconds      
object Top5 {      def main(args:Array[String]){      val conf=new SparkConf()      conf.setAppName("Top5").setMaster("spark://SparkMaster:7077")//此时程序在Spark集群模式运行      val ssc=new StreamingContext(conf,Seconds(5))//创建StreamingContext,两个参数分别为SparkConf和Durations      val hottestStream=ssc.socketTextStream("SparkMaster:7077", 9999)//设置socket端口号,通过socket端口来手动输入数据      val searchPair=hottestStream.map(_.split("")(1)).map(item=>(item,1))    val hottestDStream=searchPair.reduceByKeyAndWindow((v1:Int,v2:Int)=>v1+v2,Seconds(60),Seconds(20))//设置窗口,时间为60秒,设置滑动,时间为20秒      hottestDStream.transform(hottestItemRDD=>{      val top5=hottestItemRDD.map(pair=>(pair._2,pair._1)).sortByKey(false)      .map(pair=>(pair._2,pair._1)).take(3)      for(item<-top5){      println(item)      }      hottestItemRDD}      ).print()      ssc.start()      ssc.awaitTermination()      }} 
启动hadoop
$HADOOP_HOME$/sbin#./start-dfs.sh
启动Spark
$SPARK_HOME$/sbin#./strat-all.sh
此时jps看一下进程
3857 SecondaryNameNode
3665 NameNode
4021 Master
4061 Jps
Spark和Hadoop都启动之后,将程序打包到集群上运行
$SPARK_HOME$/bin#./spark-submit --class com.dt.sparkstreaming.Top5  --master spark://SparkMaster:7077  /root/Documents/top5.jar
打开Socket端口
nc -lk 9999
手动输入数据
spark hadoop flume spark SQL
spark streaming socket println
sortbykey transform start namenode
master hadoop SQL server catch
exception RDD jps secondary namenode
sbin home submit top5

得到前5热搜词

spark
SQL
hadoop
start
namenode

2.黑客过滤


import org.apache.spark.streaming.{Seconds, StreamingContext}
import org.apache.spark.{SparkConf, SparkContext}object BlackListFilter {def main(args:Array[String]): Unit ={val conf=new SparkConf()conf.setAppName("BlackListFilter").setMaster("spark://SparkMaster:7077")val sc=new SparkContext(conf)val ssc=new StreamingContext(sc,Seconds(2))//创建StreamingContext,设置每一秒刷新一次。val blackList=Array(("Jim",true),("Kim",true),("KAT",true))//设置需要过滤的黑名单val blackListRDD=ssc.sparkContext.parallelize(blackList,3)//设置并行度,这里指定为3val socketText=ssc.socketTextStream("SparkMaster:7077",9999)//对输入数据进行转换,(id, user) => (user, id user) ,以便对每个批次RDD,与之前定义好的黑名单进行leftOuterJoin操作。val users = socketText.map { l => (l.split(" ")(1),l) }//调用左外连接操作leftOuterJoin,进行黑名单匹配,过滤掉。val validRddDS = users.transform(ld => {val ljoinRdd = ld.leftOuterJoin(blackListRDD)val fRdd = ljoinRdd.filter(tuple => {if(tuple._2._2.getOrElse(false)) {false} else {true}})val validRdd = fRdd.map(tuple => tuple._2._1)validRdd})validRddDS.print()//打印白名单ssc.start()ssc.awaitTermination()}
}

在终端9999中输入一下内容

0001 Kim
0003 hack
0002 Slick


得到如下内容

hack
Slick
可以看到已经将黑名单里面的Kim给过滤掉。




























































这篇关于Spark Streaming模拟网络热搜词和黑客过滤的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/477718

相关文章

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

Linux网络配置之网桥和虚拟网络的配置指南

《Linux网络配置之网桥和虚拟网络的配置指南》这篇文章主要为大家详细介绍了Linux中配置网桥和虚拟网络的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、网桥的配置在linux系统中配置一个新的网桥主要涉及以下几个步骤:1.为yum仓库做准备,安装组件epel-re

Python模拟串口通信的示例详解

《Python模拟串口通信的示例详解》pySerial是Python中用于操作串口的第三方模块,它支持Windows、Linux、OSX、BSD等多个平台,下面我们就来看看Python如何使用pySe... 目录1.win 下载虚www.chinasem.cn拟串口2、确定串口号3、配置串口4、串口通信示例5

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

SpringIntegration消息路由之Router的条件路由与过滤功能

《SpringIntegration消息路由之Router的条件路由与过滤功能》本文详细介绍了Router的基础概念、条件路由实现、基于消息头的路由、动态路由与路由表、消息过滤与选择性路由以及错误处理... 目录引言一、Router基础概念二、条件路由实现三、基于消息头的路由四、动态路由与路由表五、消息过滤