Spark大数据分与实践笔记(第七章 Spark Streaming实时计算框架-02)

本文介绍了如何使用Spark Streaming的DStream编程实现网站热词排序,通过分析用户兴趣来优化网站内容。详细步骤包括在MySQL创建数据库和表以存储热词数据,添加MySQL依赖到项目,以及编写Scala类`HotWordBySort`实现热词统计排序。运行程序后,数据将被输入到指定端口并存储于Mysql的searchKeyWord表中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第七章 Spark Streaming实时计算框架

7.3.6 DStream实例——实现网站热词排序

接下来,以实现网站热词排序为例外分析出用户对网站哪些词感兴趣或者不感兴趣,以此来增加用户感兴趣词的内容,减少不感兴趣词的内容,从而提升用户访问网站的流量。在SparkStreaming中 是通过DStream编程实现热词排序,并将排名前三的热词输出到Mysql数据表中进行保存。具体实现步骤如下:
1.创建数据库和表
在MySQL数据库中创建数据库和表,用于接收处理后的数据,具体语句如下:

use spark;
create table searchKeyWord(insert_time date,keyword varchar(30),search_count integer);

上述语句中,字段insert_ time代表的是插入数据的日期;字段keyword代表的是热词;字段search_count代表的是在指定的时间内该热词出现的次数。
2.导入依赖
在pom.xm|文件中,添加Mysq|数据库的依赖,具体内容如下:

<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>8.0.30</version>
</dependency>

3.创建Scala类,实现热词排序
在spark_ _chapter07项目的/src/main/scala/cn.itcast.dstream文件夹下,创建一个名为"HotWordBySort"的Scala类, 用于编写Spark Streaming应用程序,实现热词统计排序,具体实现代码如文件所示。
文件7-6 HotWordBySort.scala

import java.sql.{
   DriverManager, Statement}
import org.apache.spark.{
   SparkConf, SparkContext}
import org.apache.spark.streaming
要实现SparkStreaming实时热词排序,可以按照以下步骤进行: 1. 从数据源读取实时数据,并将其转换为DStream流。 2. 对DStream进行一系列转换,如FlatMap、Map、ReduceByKey等,以提取出热词,并进行词频统计。 3. 将统计结果进行排序,取出TopN热词。 4. 将排序结果输出到外部存储系统,如MySQL、Redis等。 具体实现过程可以参考以下代码示例: ```python from pyspark import SparkContext from pyspark.streaming import StreamingContext # 创建SparkContext和StreamingContext sc = SparkContext("local[2]", "HotWords") ssc = StreamingContext(sc, 5) # 从数据源读取实时数据 lines = ssc.socketTextStream("localhost", 9999) # 对DStream进行转换,提取出热词并进行词频统计 words = lines.flatMap(lambda line: line.split(" ")) wordCounts = words.map(lambda word: (word, 1)).reduceByKey(lambda x, y: x + y) # 对统计结果进行排序,取出TopN热词 topWords = wordCounts.transform(lambda rdd: rdd.sortBy(lambda x: x[1], ascending=False).take(10)) # 将排序结果输出到外部存储系统 def outputResult(rdd): for word in rdd: print(word) # 将结果输出到MySQL数据库 # ... topWords.foreachRDD(outputResult) ssc.start() ssc.awaitTermination() ``` 在上述代码中,我们使用了SparkStreaming的socketTextStream方法从本地9999端口读取数据,并对数据进行了FlatMap和ReduceByKey转换,以实现热词统计。然后使用transform方法对统计结果进行排序,并使用take方法取出TopN热词。最后,我们使用foreachRDD方法将排序结果输出到控制台,并可以将结果输出到外部存储系统,如MySQL数据库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妉妉师姐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值