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

相关文章

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基础概念二、条件路由实现三、基于消息头的路由四、动态路由与路由表五、消息过滤

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

java streamfilter list 过滤的实现

《javastreamfilterlist过滤的实现》JavaStreamAPI中的filter方法是过滤List集合中元素的一个强大工具,可以轻松地根据自定义条件筛选出符合要求的元素,本文就来... 目录1. 创建一个示例List2. 使用Stream的filter方法进行过滤3. 自定义过滤条件1. 定

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

Redis如何实现刷票过滤

《Redis如何实现刷票过滤》:本文主要介绍Redis如何实现刷票过滤问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录引言一、概述二、技术选型三、搭建开发环境四、使用Redis存储数据四、使用SpringBoot开发应用五、 实现同一IP每天刷票不得超过次数六

CSS模拟 html 的 title 属性(鼠标悬浮显示提示文字效果)

《CSS模拟html的title属性(鼠标悬浮显示提示文字效果)》:本文主要介绍了如何使用CSS模拟HTML的title属性,通过鼠标悬浮显示提示文字效果,通过设置`.tipBox`和`.tipBox.tipContent`的样式,实现了提示内容的隐藏和显示,详细内容请阅读本文,希望能对你有所帮助... 效

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为