首页 > 其他分享 >1/20 学习进度笔记

1/20 学习进度笔记

时间:2024-01-20 20:14:23浏览次数:23  
标签:word split 笔记 rdd 搜索 进度 20 data lambda

完成了搜索引擎日志分析小案例

数据由两万条一下六列相同格式的单个数据组成  分别对应:搜索时间    用户ID  搜索内容  URL返回排名  用户点击顺序  用户点击的URL

 使用到了python的jieba插件进行热词的分析

TODO: 需求1: 用户搜索关键‘词’分析
需求1结果: [('scala', 2310), ('hadoop', 2268), ('博学谷', 2002), ('传智汇', 1918), ('itheima', 1680)]
0号元素为搜索热词,1号元素为搜索次数,上述为搜索前五的数据
TODO: 需求2: 用户和关键词组合分析1
需求2结果: [('6185822016522959_scala', 2016), ('41641664258866384_博学谷', 1372), ('44801909258572364_hadoop', 1260), ('7044693659960919_数据', 1120), ('7044693659960919_仓库', 1120)]
0号元素为用户ID_搜索热词,1号元素为搜索次数
TODO: 需求3: 热门搜索时间段分析
需求3结果: [('20', 3479), ('23', 3087), ('21', 2989), ('22', 2499), ('01', 1365), ('10', 973), ('11', 875), ('05', 798), ('02', 756), ('19', 735), ('12', 644), ('14', 637), ('00', 504), ('16', 497), ('08', 476), ('04', 476), ('03', 385), ('09', 371), ('15', 350), ('06', 294), ('13', 217), ('18', 112), ('17', 77), ('07', 70)]
0号元素为小时,1号元素为搜索次数

原码(jieba_demo.py):

# coding:utf8
import json
from pyspark import SparkContext, SparkConf
from pyspark.storagelevel import StorageLevel
from operator import add
import defs


if __name__ == '__main__':

conf = SparkConf().setMaster("local[*]").setAppName("test")
sc = SparkContext(conf=conf)

file_rdd = sc.textFile("../data/SogouQ.txt")

split_rdd = file_rdd.map(lambda line: line.split("\t"))

split_rdd.persist(StorageLevel.DISK_ONLY)
# TODO: 需求1: 用户搜索关键‘词’分析
# 主要分析热点词
# 将所有搜索内容取出
# print(split_rdd.takeSample(True,3)) 抽样取出检查

context_rdd = split_rdd.map(lambda x: x[2])

# 对搜索内容进行分词分析
word_rdd = context_rdd.flatMap(defs.context_jieba)
# print(word_rdd.collect()) 院校帮 博学谷 传智播客
filtered_rdd = word_rdd.filter(defs.filter_words)
final_word_rdd = filtered_rdd.map(defs.append_word)
result1 = final_word_rdd.reduceByKey(lambda a, b: a + b).sortBy(lambda x:x[1],ascending=False,numPartitions=1).take(5)
print("需求1结果:", result1)

# TODO: 需求2: 用户和关键词组合分析1
# 1 我喜欢清华大学
# 1+我 1+喜欢 1+清华大学
user_context_rdd = split_rdd.map(lambda x:(x[1], x[2]))
user_word_with_one_rdd = user_context_rdd.flatMap(defs.extrect_usr_and_word)
result2 = user_word_with_one_rdd.reduceByKey(lambda a, b: a + b).sortBy(lambda x: x[1], ascending=False,numPartitions=1).take(5)
print("需求2结果:", result2)

# TODO: 需求3: 热门搜索时间段分析
time_rdd = split_rdd.map(lambda x:x[0])
hour_with_one_rdd = time_rdd.map(lambda x: (x.split(":")[0], 1))

result3 = hour_with_one_rdd.reduceByKey(add).sortBy(lambda x: x[1],ascending=False,numPartitions=1).collect()
print("需求3结果:", result3)
函数附件(defs.py):
# coding:utf8

import jieba

def context_jieba(data):
"""通过jieba分词工具 进行分词操作"""
seg = jieba.cut_for_search(data)
l = list()
for i in seg:
l.append(i)
return l

def filter_words(data):
return data not in ['谷','帮','客']

def append_word(data):
if data == '博学': data = '博学谷'
if data == '传智播': data = '传智播客'
if data == '院校': data = '院校帮'
return (data,1)

def extrect_usr_and_word(data):
user_id = data[0]
content = data[1]
words = context_jieba(content)

return_list = []
for word in words:
if filter_words(word):
return_list.append((user_id + '_' +append_word(word)[0],1))
return return_list


除此之外完成了将该代码提交到yarn集群中运行:
1.删除代码中setMaster部分
2.将文件上传路径修改为HDFS储存路径

 

 

 

 

标签:word,split,笔记,rdd,搜索,进度,20,data,lambda
From: https://www.cnblogs.com/yuncannotjava/p/17977060

相关文章

  • 1.20寒假每日总结11
    学习执行计划。简单的解释为:explainquery;一个简单的例子为:explainselectsum(id)fromtest1;该语句的执行计划为:STAGEDEPENDENCIES:Stage-1isarootstageStage-0dependsonstages:Stage-1STAGEPLANS:Stage:Stage-1MapReduceMap......
  • 2024.1.20
    1.异常(1)检查性异常:最具代表性的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在的文件时,一个异常就发生了,这些异常不能被简单地忽略。(2)运行时异常:运行时异常时可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。(3......
  • 1.20每日总结
    Python3数字(Number)Python数字数据类型用于存储数值。数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间。以下实例在变量赋值时Number对象将被创建:var1=1var2=10您也可以使用del语句删除一些数字对象的引用。del语句的语法是:delva......
  • CSP-S 2023 游记
    9月初开学,来到了BCMS。毕竟是新初一吗,军训还是要有的。军训期间总是隔三差五来到机房训练。现在回忆当时貌似啥也没学,可这确实是一份美好回忆,因为这段时间可以称得上我进步最快的阶段。当时可能主要去复习S初赛了吧。初赛去WFYZ考的,考场总共就那么几个人。赛时感觉过的挺......
  • Ubuntu20.04安装部署Jenkins
     Jenkins要求Java8及更高版本,检查系统上是否安装了Javajava--version如果没有安装Java,执行如下命令,在您的系统上安装Javasudoaptinstall-yopenjdk-17-jre-headless再次验证Java版本安装Jenkins会启用JenkinsAPT软件源,导入源GPGkey,并且安装Jenkins软件包......
  • P8651 [蓝桥杯 2017 省 B] 日期问题
    这道题虽然逻辑很简单,但是坑不少,一不留神就WA了要记得去重+排序#include<iostream>#include<stdio.h>#include<algorithm>#include<string>#include<set>#defineFor(i,j,n)for(inti=j;i<=n;++i)usingnamespacestd;stringdate;set<......
  • 国产AI新篇章:书生·浦语2.0带来200K超长上下文解决方案
    总览:大模型技术的快速演进自2023年7月6日“书生·浦语”(InternLM)在世界人工智能大会上正式开源以来,其在社区和业界的影响力日益扩大。在过去半年中,大模型技术体系经历了快速的演进,特别是100K级别的长上下文、代码解释、智能体等新技术的不断迭代。伴随技术水平的不断提升,大模型在应......
  • 【2024潇湘夜雨】WIN11_Pro_23H2.22631.3078软件选装纯净版1.19
    【系统简介】=============================================================1.本次更新母盘来自WIN11_Pro_23H2.22631.3078。2.增加部分优化方案,手工精简部分较多。3.OS版本号为22631.3078。精简系统只是为部分用户安装,个别要求高的去MSDN下。4.集成《DrvCeo-2.15.0.5》网卡版、......
  • Office 2021:高效工作,轻松生活 mac/win版
    Office2021是微软公司推出的一款办公软件套件,包括Word、Excel、PowerPoint、Outlook等多个应用程序,是全球范围内广泛使用的办公软件之一。→→↓↓载Office2021mac/win首先,Office2021在功能上进行了许多改进和升级,使得用户可以更加高效地完成各种任务。其中最显著的特点是增......
  • 数据库学习笔记(二)—— MySQL 之 存储引擎和索引篇
    存储引擎和索引 前言关于MySQL的学习着实有些混乱,虽然才到学习笔记二,但学习笔记四都已经写完了,其他写一点,可以说是东一榔头西一棒槌;写出的东西也不忍直视,省略了很多细节,还基本上都是到处搬运的,可即便是搬运,也都绞尽脑汁了。网上的知识大多都模糊不清,甚至还错误百出,为了......