IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 关于spark整理数据 -> 正文阅读

[大数据]关于spark整理数据

/**

  • Author itcast *1.热门搜索词 2.用户热门搜索词(带上用户id) 3.各个时间段搜索热度 /import com.hankcs.hanlp.HanLPimport org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}import shapeless.recordimport spire.std.tuplesimport scala.collection.immutable.StringOpsimport scala.collection.mutable object SougouSearchLogAnalysis { def main(args: Array[String]): Unit = { //TODO 0.准备环境 val conf: SparkConf = new SparkConf().setAppName(“spark”).setMaster("local[]") val sc: SparkContext = new SparkContext(conf) sc.setLogLevel(“WARN”) //TODO 1.加载数据 val lines: RDD[String] = sc.textFile(path = “data/input/SogouQ.sample”)//数据的位置 //TODO 2.处理数据 //1.封装数据 //lines.map(line=>{//加入value后变为://map是一个进去一个出去 val SogouRecordRDD: RDD[SogouRecord] = lines.map(line => { val arr:Array[String] = line.split( regex = “\s+”) SogouRecord( arr(0), arr(1), arr(2), arr(3).toInt, arr(4).toInt, arr(5) ) }) // )后加.value可直接出来 //2.切割数据 val wordsRDD: RDD[String] = SogouRecordRDD.flatMap(record=>{//flatMap是一个进去,多个出去(出去之后会被压扁) //360安全卫士==>[360,安全卫士] val wordsStr : String = record.queryWords.replaceAll(regex = “\[|\]”, replacement="") // 360安全卫士 import scala.collection.JavaConverters._ //将Java集合转为scala集合 //println(HanLP.setment(cleanWords2).asScala.map(.word)) //ArrayBuffer(360, 安全卫士) HanLP.segment(wordsStr).asScala.map(.word) //ArrayBuffer(360, 安全卫士) //} : SogouRecord => Unit : Unit) }) //TODO 3.统计指标 //–1.热门搜索词 val result1: Array[String, Int)] = wordsRDD.map((, 1)) .filter(word => !word.equals(".") && !word.equals("+")) .map((, 1)) .reduceByKey(_ + ) .sortBy(.2, ascending = false) .take( num = 10) //–2.用户热门搜索词(带上用户id) val userIdAndWordRDD: RDD[(String, String)] = SogouRecordRDD.flatMap(record => { val wordsStr: String = record.queryWords.replaceAll(regex = “\[|\]”, replacement = “”) import scala.collection.JavaConverters. val words: mutable.Buffer[String] = HanLP.segment(wordsStr).asScala.map(_.word) val userId: String = record.userId
    words.map(word => (userId, word))
    }) userIdAndWordRDD val result2: Array[((String, String), Int)] = userIdAndWordRDD .filter(t=> !t.2.equals(".") && !t.2.equals("+")) .map((, 1)) .reduceByKey( + ) .sortBy(.2, ascending = false) .take( num = 10) //–3.各个时间段搜索热度 val result3: Array[String, Int)] = SogouRecordRDD.map(record => { val timeStr: String = record.queryTime val hourAndMitunesStr: String = timeStr.substring(0, 5) (hourAndMitunesStr, 1) }).reduceByKey( + ) .sortBy(._2, ascending = false) .take( num = 10) //TODO 4.输出结果 result1.foreach(println) result2.foreach(println) result3.foreach(println) //TODO 5.释放资源 sc.stop() } //准备一个样例类用来封装数据 /
    * 用户搜索点击网页记录Record * @param queryTime 访问时间, 格式为:HH:mm:ss * @param userID 用户ID * @param queryWords 查询词 * @param resultRank 该URL在返回结果中的排名 * @param clickRank 用户点击的顺序号 * @param clickUrl 用户点击的URL */ case class SogouRecord( queryTime: String,
    userID: String,
    queryWords: String,
    resultRank: Int,
    clickRank: Int,
    clickUrl: String
    )}
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-16 17:44:46  更:2021-12-16 17:46:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:27:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码