(第7篇)八斗学习课堂笔记-【01、02】推荐系统

2023-10-10 03:59

本文主要是介绍(第7篇)八斗学习课堂笔记-【01、02】推荐系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第一步:召回阶段:用token检索item,(比如8个item)

第二步:过滤阶段:把劣质的item过滤掉,(剩余5个item)

第三步:排序,把好的item排前面

第四步:截断,取TopN

 

其中,第一步和第二步属于粗排阶段,侧重于召回;第三、第四步属于精排阶段,侧重于准确。

建库:

 

 

==================================================================

 

【02】MR实践复习

1、架构

2、mapreduce(复习)

2.1 MR基本概念

(1)通常一个集群中,有这几个角色:master、slave、client

(2)数据副本 —— 数据高可用、容灾

(3)mapreduce —— 分而治之思想

(4)一个split和一个map是一对一的关系

(5)开发java相当于开发函数,开发python等脚本,相当于规定好标准输入和输出

(6)hadoop 1.0 -> hadoop 2.0

  • hadoop1.0:

主:jobtracker、namenode

从:tasktracker、datanode

TaskTracker通过slot数目(可配置参数)限定Task的并发度

进程:worker

  • hadoop 2.0:

主:ResourceMgr(RM资源调度)、ApplicationManager(AM任务调度)

从:NodeManager(NM)

进程:容器(Container)

* 先排序再溢写

单机调试:

cat input | mapper | sort | reducer > output

节点上,分发目标path:

 /usr/local/src/hadoop-2.6.5/tmp/nm-local-dir/usercache/root/appcache/application_1543137200099_0011/container_1543137200099_0011_01_000001

杀死任务:

yarn application -kill application_1543137200099_0011

 

2.2 实践代码

(1)wordcount

(2)全排序

(a) 单reducer:依赖框架自身的sort功能

方式①:通过加一个很大的base_count,保证key对齐,依赖字典序完成全局排序

第一个代码:mr_allsort_1reduce_python(base count)

	  -jobconf "mapred.reduce.tasks=1"

方式②:通过配置完成全排序,不需要设置base_count

第二个代码:mr_allsort_1reduce_python_2 (通过配置完成)依赖于框架自身的sort功能

	  # 指定按 key 做 partition
       -partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner 
      # 利用该配置可以完成二次排序
       -jobconf  org.apache.hadoop.mapred.lib.KeyFieldBasedComparator \
      # 利用该配置可以完成key排序  
      # 1 代表第一列
       -jobconf stream.num.map.output.key.fields=1 \
      # 设置map分隔符的位置,该位置前的为key,之后的为value
      # "-k1,1" 表示从第1个字段开始,到第一个字段结束,即第一个字段
      -jobconf mapred.text.key.partitioner.options="-k1,1" \
       # 设置key中需要比较的字段或字节范围
       # 选择哪一部分做partition,n是指数字
      -jobconf mapred.text.key.comparator.options="-k1,1n" \
      -jobconf mapred.reduce.tasks=1

(b) 多reducer

mr_allsort_python(多桶)

适合大数据

	-jobconf mapred.reduce.tasks=2 \
     # 二次排序的时候需要指定哪个是key,2代表前面两个字段区域作为key
	-jobconf stream.num.map.output.key.fields=2 \
     # 指定第一个字段是key,指定partition阶段的key值,用于分发	  
    -jobconf num.key.fields.for.partition=1 \ 
    -partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner
 
//    mapred.text.key.partitioner.options,
//    这个参数可以认为是 num.key.fields.for.partition的升级版
//    它可以指定不仅限于key中的前几个字段用做partition,
//    而是可以单独指定 key中某个字段或者某几个字段一起做partition。

(3)白名单——分发

    -file:把本地的文件分发到各个节点
    -cachefile:把hdfs的压缩文件分发到各个节点
    -archivefile:把hdfs的压缩目录分发到各个节点
 
#  操作
 tar cvzf w.tar.gz white_list_1  white_list_2

(4)压缩

# 指定map的输出是否压缩,有助于减小数据量,减小io压力
# 通过该方法可以控制map个数,形成压缩文件之后不会再进行split
mapred.compress.map.output
# 指定map的输出压缩算法
mapred.map.output.compression.codec

(5)join

例如:相同的key,value拼成一起

-jobconf stream.num.map.output.key.fields=2 \
-jobconf num.key.fields.for.partition=1

 

3、一个简易demo,检索系统

名单信息:

# python main.py 9999

通过网页打开9999端口,并输入userid

一起学习一起讨论的可以加我V一起分享:我的名字叫甘世玉, v:姓名全拼1026

我这边有一些大数据的课程可以分享给你

 

这篇关于(第7篇)八斗学习课堂笔记-【01、02】推荐系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

python 常见数学公式函数使用详解(最新推荐)

《python常见数学公式函数使用详解(最新推荐)》文章介绍了Python的数学计算工具,涵盖内置函数、math/cmath标准库及numpy/scipy/sympy第三方库,支持从基础算术到复杂数... 目录python 数学公式与函数大全1. 基本数学运算1.1 算术运算1.2 分数与小数2. 数学函数

Python Pillow 库详解文档(最新推荐)

《PythonPillow库详解文档(最新推荐)》Pillow是Python中最流行的图像处理库,它是PythonImagingLibrary(PIL)的现代分支和继承者,本文给大家介绍Pytho... 目录python Pillow 库详解文档简介安装核心模块架构Image 模块 - 核心图像处理基本导入

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos

Java SWT库详解与安装指南(最新推荐)

《JavaSWT库详解与安装指南(最新推荐)》:本文主要介绍JavaSWT库详解与安装指南,在本章中,我们介绍了如何下载、安装SWTJAR包,并详述了在Eclipse以及命令行环境中配置Java... 目录1. Java SWT类库概述2. SWT与AWT和Swing的区别2.1 历史背景与设计理念2.1.

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构