亚马逊运营推荐数仓项目实战

亚马逊运营推荐数仓项目实战

 项目技术栈

Hadoop+Spark +(Python)Scala + SparkSQL+SparkStreaming + MongoDB + Redis + Kafka + Flume +( SpringMVC + vue)

1 项目介绍

1.1 项目系统架构

项目以推荐系统建设领域知名的经过修改过的中文亚马逊电商数据集作为依托,以某电商网站真实业务数据架构为基础,构建了符合教学体系的一体化的电商推荐系统,包含了离线推荐与实时推荐体系,综合利用了协同过滤算法以及基于内容的推荐方法来提供混合推荐。提供了从前端应用、后台服务、算法设计实现、平台部署等多方位的闭环的业务实现。

推荐系统最重要是2个阶段:召回 + 排序

img

用户可视化:

主要负责实现和用户的交互以及业务数据的展示,主体采用AngularJS2进行实现,部署在 Apache服务上。

综合业务服务:

主要实现JavaEE层面整体的业务逻辑,通过Spring进行构建,对接业务需求。部署在 Tomcat上。

【数据存储部分】

业务数据库:

项目采用广泛应用的文档数据库MongDB作为主数据库,主要负责平台业务逻辑数据的存储。

缓存数据库:

项目采用Redis作为缓存数据库,主要用来支撑实时推荐系统部分对于数据的高速获取需 求。

【离线推荐部分】

离线统计服务:

批处理统计性业务采用Spark Core + Spark SQL进行实现,实现对指标类数据的统计任务。

离线推荐服务:

离线推荐业务采用Spark Core + Spark MLlib进行实现,采用ALS算法进行实现。

【实时推荐部分】

日志采集服务:

通过利用Flume-ng对业务平台中用户对于商品的一次评分行为进行采集,实时发送到 Kafka集群。

消息缓冲服务:

项目采用Kafka作为流式数据的缓存组件,接受来自Flume的数据采集请求。并将数据 推送到项目的实时推荐系统部分。

实时推荐服务:

项目采用Spark Streaming作为实时推荐系统,通过接收Kafka中缓存的数据,通过设 计的推荐算法实现对实时推荐的数据处理,并将结构合并更新到MongoDB数据库。

1.2 项目数据流程

img

【系统初始化部分】

通过Spark SQL将系统初始化数据加载到MongoDB中。

【离线推荐部分】

可以通过Azkaban实现对于离线统计服务以离线推荐服务的调度,通过设定的运行时间完成对任务 的触发执行。

离线统计服务从MongoDB中加载数据,将【商品平均评分统计】、【商品评分个数统计】、【最 近商品评分个数统计】三个统计算法进行运行实现,并将计算结果回写到MongoDB中;离线推荐 服务从MongoDB中加载数据,通过ALS算法分别将【用户推荐结果矩阵】、【影片相似度矩阵】 回写到MongoDB中。

【实时推荐部分】

Flume从综合业务服务的运行日志中读取日志更新,并将更新的日志实时推送到

Kafka

中;

Kafka

在收到这些日志之后,通过

kafkaStream

程序对获取的日志信息进行过滤处理,获取用户评分数 据流

【UID|MID|SCORE|TIMESTAMP】

,并发送到另外一个

Kafka

队列;

Spark Streaming

监 听

Kafka

队列,实时获取

Kafka

过滤出来的用户评分数据流,融合存储在

Redis

中的用户最近评分 队列数据,提交给实时推荐算法,完成对用户新的推荐结果计算;计算完成之后,将新的推荐结果和

MongDB

数据库中的推荐结果进行合并。

【业务系统部分】

推荐结果展示部分,从MongoDB中将离线推荐结果、实时推荐结果、内容推荐结果进行混合,综 合给出相对应的数据。

商品信息查询服务通过对接MongoDB实现对商品信息的查询操作。

商品评分部分,获取用户通过UI给出的评分动作,后台服务进行数据库记录后,一方面将数据推动到Redis群中,另一方面,通过预设的日志框架输出到Tomcat中的日志中。

商品标签部分,项目提供用户对商品打标签服务。

二、大数据梗概

1.1什么是大数据

数据:指无法在一定时间范围内用常规软件工具进行捕捉,管理和处理的数据集合,是需要新模式才能具有更强大的决策力,洞察发现力和流程优化能力的海量,高增长率和多样化的信息资产

最小的基本单位是bit,按顺序给出所有单位:bit、Byte、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB。

1 KB = 1,024 Bytes = 8192 bit`
1 MB = 1,024 KB = 1,048,576 Bytes`
1 GB = 1,024 MB = 1,048,576 KB`
1 TB = 1,024 GB = 1,048,576 MB`
1 PB = 1,024 TB = 1,048,576 GB`
1 EB = 1,024 PB = 1,048,576 TB`
1 ZB = 1,024 EB = 1,048,576 PB`
1 YB = 1,024 ZB = 1,048,576 EB`
1 BB = 1,024 YB = 1,048,576 ZB`
1 NB = 1,024 BB = 1,048,576 YB`
1 DB = 1,024 NB = 1,048,576 BB`

大数据,官方定义是指那些数据量特别大、数据类别特别复杂的数据集,这种数据集无法用传统的数据库进行存储,管理和处理。 大数据的主要特点为:

数据量大(Volume)

数据类别复杂(Variety)

数据处理速度快(Velocity)

数据真实性高(Veracity)

合起来被称为4V。

还有的将大数据特点定义为6V模型,即增加了Valence(连接)、Value(价值)2V。

大数据常见概念分类 大数据相关的概念大家都听过不少:HDFS、MapReduce、Spark、Storm、Spark Streaming、Hive、Hbase、Flume、Logstash、Kafka、Flink、Druid、ES等等。 是否感觉眼花缭乱? 下面我们将这些常见的概念进行分组。 同一组的框架(工具)可以完成相同的工作,但各自使用的场景有所差异。

01 计算框架 离线计算:Hadoop MapReduce、Spark 实时计算:Storm、Spark Streaming、Flink

02 存储框架 文件存储:Hadoop HDFS、Tachyon、KFS NOSQL数据库:HBase、MongoDB、Redis 全文检索:ES、Solr

03 资源管理 YARN、Mesos

04 日志收集 Flume、Logstash

05 消息系统 Kafka、StormMQ、ZeroMQ、RabbitMQ

06 查询分析 Hive、Impala、Pig、Presto、Phoenix、SparkSQL、Drill、Kylin、Druid

1.2大数据应用

从证券行业到医疗领域,越来越多公司意识到大数据的重要性。2015年Gartner调查显示,超过75%的公司正在投资或计划在未来两年内投资大数据。而在2012年进行的类似调查中,仅有58%的公司在未来两年内计划投资大数据。

增强客户体验、降低成本、精准营销以及提高流程效率、数据安全是公司关注大数据的主要目的。本文将研究正在使用大数据的10个垂直行业及面临的挑战,以及大数据如何解决这些难题。

1 银行和证券

挑战:

通过对10家投行券商的16个项目的研究表明,该行业面临的挑战包括:证券欺诈预警、蜱虫分析、检测卡片欺诈、审计跟踪档案、企业信用风险报告、贸易可视性、客户数据转换、用于交易的社交分析、IT运营分析和IT策略合规性分析等。

应用:

证券交易委员会(SEC)正在使用大数据网络分析和自然语言处理器来捕捉金融市场中的非法交易活动。

商业银行,对冲基金和其他金融公司在高频交易的交易分析,交易前的决策支持分析,情绪测量,预测分析等方向使用大数据。

该行业还严重依赖大数据进行风险分析,这其中包括:反洗钱,企业风险管理,客户画像,以及减少欺诈行为等。

2 通讯,媒体和娱乐

挑战:

每个观众消费着不同形式的娱乐,以及不同的娱乐设备,因此通信,媒体和娱乐行业正面临以下大数据挑战:

1 收集,分析和利用消费者习惯

2 利用移动和社交媒体内容

3 实时追踪媒体内容使用形式

应用:

公司同时分析客户数据和行为数据,以创建详细的客户档案,可用于:

1 个性化定制内容

2 按需推荐内容

3 衡量内容结果

一个典型的例子是国外视频网站YouTube上的温网比赛,它利用大数据实时向电视、移动和网络用户提供网球比赛的详尽的情感分析。亚马逊Prime大量使用大数据,在一站式商店提供视频,音乐和Kindle书籍来提供卓越的客户体验。

1.3大数据发展前景

大数据技术目前正处在落地应用的初期,从大数据自身发展和行业发展的趋势来看,大数据未来的前景还是不错的,具体原因有以下几点:

第一:大数据自身能够创造出更多的价值。大数据相关技术紧紧围绕数据价值化展开,数据价值化将开辟出广大的市场空间,重点在于数据本身将为整个信息化社会赋能。随着大数据的落地应用,大数据的价值将逐渐得到体现。目前在互联网领域,大数据技术已经得到了较为广泛的应用。

第二:大数据推动科技领域的发展。大数据的发展正在推动科技领域的发展进程,大数据的影响不仅仅体现在互联网领域,也体现在金融、教育、医疗等诸多领域。在人工智能研发领域,大数据也起到了重要的作用,尤其在机器学习、计算机视觉和自然语言处理等方面,大数据正在成为智能化社会的基础。

第三:大数据产业链逐渐形成。经过近些年的发展,大数据已经初步形成了一个较为完整的产业链,包括数据采集、整理、传输、存储、分析、呈现和应用,众多企业开始参与到大数据产业链中,并形成了一定的产业规模,相信随着大数据的不断发展,相关产业规模会进一步扩大。

第四:产业互联网将推动大数据落地。当前互联网正在经历从消费互联网向产业互联网过渡,产业互联网将利用大数据、物联网、人工智能等技术来赋能广大的传统产业,可以说产业互联网的发展空间非常大,而大数据则是产业互联网发展的一个重点,大数据能否落地到传统行业,关乎产业互联网的发展进程,所以在产业互联网阶段,大数据将逐渐落地,也必然落地。

通过以上分析可以得出,未来大数据领域的发展空间还是比较大的,而且目前大数据领域的人才缺口比较大,所以从就业的角度来说,当前学习大数据相关知识是个不错的选择。

项目运行截图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/213911.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【小白专用】在 vs 中使用 nuget 安装NPOI

C#操作Excel有多种方法,如通过数据库的方式来读写Excel的OleDb方式,但是OleDb方式需要安装微软office,还可以通过COM组件方式操作Excel,也需要安装微软Excel。如果不想安装微软办公套餐可以使用ClosedXML、EPPlus、NPOI。本文主要…

Ubuntu22.04 LTS + CUDA12.3 + CUDNN8.9.7 + PyTorch2.1.1

简介 本文记录Ubuntu22.04长期支持版系统下的CUDA驱动和cuDNN神经网络加速库的安装,并安装PyTorch2.1.1来测试是否安装成功。 安装Ubuntu系统 如果是旧的不支持UEFI启动的主板,请参考本人博客U盘系统盘制作与系统安装(详细图解&#xff09…

mac苹果电脑清除数据软件CleanMyMac X4.16

在数字时代,保护个人隐私变得越来越重要。当我们出售个人使用的电脑,亦或者离职后需要上交电脑,都需要对存留在电脑的个人信息做彻底的清除。随着越来越多的人选择使用苹果电脑,很多人想要了解苹果电脑清除数据要怎样做才是最彻底…

深入理解Sentinel系列-1.初识Sentinel

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码、Kafka原理、分布式技术原理🔥如果感觉博主的文章还不错的话&#xff…

低多边形游戏风格3D模型纹理贴图

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时,有几种不同的风格&#xf…

《安富莱嵌入式周报》第328期:自主微型机器人,火星探测器发射前失误故障分析,微软推出12周24期免费AI课程,炫酷3D LED点阵设计,MDK5.39发布

周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 更新一期视频教程: 【实战技能】 单步运行源码分析,一期视频整明白FreeRTOS内核源码框架和运行…

模电·放大电路的分析方法——图解法

放大电路的分析方法——图解法 静态工作点的分析电压放大倍数的分析波形非线性失真的分析直流负载线与交流负载线图解法的适用范围 在实际测出放大管的输入特性、输出特性和已知放大电路中其它各元件参数的情况下,利用作图的方法对放大电路进行分析即为图解法。 静…

BUU SQL COURSE 1

四 发现有登录框,爆破半天也爆破不出来,只能从别的地方下手了 F12一下 发现了一个传参 进去发现id可以传参,sql注入一下试试 前三个都有回显,当id4的时候页面没有回显了,正好验证 了页面 有三个新闻 当order by 3的时…

CSPNet: A New Backbone that can Enhance Learning Capability of CNN(2019)

文章目录 -Abstract1 Introduction2 Related workformer work 3 Method3.1 Cross Stage Partial Network3.2 Exact Fusion Model 4 Experiments5 Conclusion 原文链接 源代码 - 梯度信息重用(有别于冗余的梯度信息)可以减少计算量和内存占用提高效率&am…

内存学习——堆(heap)

目录 一、概念二、自定义malloc函数三、Debug运行四、heap_4简单分析4.1 heap管理链表结构体4.2 堆初始化4.3 malloc使用4.4 free使用 一、概念 内存分为堆和栈两部分: 栈(Stack)是一种后进先出(LIFO)的数据结构&…

Flutter自定义下拉选择框dropDownMenu

利用PopupMenuButton和PopupMenuItem写了个下拉选择框,之所以不采用系统的,是因为自定义的更能适配项目需求,话不多说,直接看效果 下面直接贴出代码、代码中注释写的都很清楚,使用起来应该很方便,如果有任何…

Navicat 技术指引 | 适用于 GaussDB 分布式的数据生成功能

Navicat Premium(16.3.3 Windows 版或以上)正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能,还提供强大的高阶功能(如模型、结…

得帆云助力容百科技构建CRM系统,实现LTC全流程管理

宁波容百新能源科技股份有限公司 宁波容百新能源科技股份有限公司(以下简称“容百科技”)于2014年9月建立,是高科技新能源材料行业的跨国型集团公司。专业从事锂电池正极材料的研发、生产和销售,于2019年登陆上交所科创板&#x…

Docker 部署 2FAuth 服务

拉取最新版本的 2FAuth 镜像: $ sudo docker pull 2fauth/2fauth:latest在本地预先创建好 2fauth 目录, 用于映射 2FAuth 容器内的 /2fauth 目录。 使用以下命令, 在 前台 运行 2FAuth 容器: $ sudo docker run -it --rm --name 2fauth -p 10085:8000/tcp -v /ho…

阻抗控制下机器人接触刚性环境振荡不稳定进行阻抗调节

在阻抗控制下,当机器人接触刚性环境时,可能会出现振荡不稳定的情况。这可以通过调整机器人的阻抗参数来进行调节。 阻抗接触 阻抗参数中的质量、阻尼和刚度都会对机器人控制系统的性能和稳定性产生重要影响。质量主要影响系统的惯性,从而影响…

打破常规思维:Scrapy处理豆瓣视频下载的方式

概述 Scrapy是一个强大的Python爬虫框架,它可以帮助我们快速地开发和部署各种类型的爬虫项目。Scrapy提供了许多方便的功能,例如请求调度、数据提取、数据存储、中间件、管道、信号等,让我们可以专注于业务逻辑,而不用担心底层的…

如何用Qt配置git项目并上传Gitee

1.进入到Qt项目文件夹内,打开 “Git Bash Here” 2.初始化,在“Git Bash Here”中输入 git init 3.加入所有文件,在“Git Bash Here”中输入 git add . (需要注意,git add 后面还有一个点) 4.添加备注,git com…

Hive数据库系列--Hive数据类型/Hive字段类型/Hive类型转换

文章目录 一、Hive数据类型1.1、数值类型1.2、字符类型1.3、日期时间类型1.4、其他类型1.5、集合数据类型1.5.1、Struct举例1.5.2、Array举例1.5.3、Map举例 二、数据类型转换2.1、隐式转换2.2、显示转换 三、字段类型的使用3.1、DECIMAL(precision,scale) 本章主要…

linux驱动开发——内核调试技术

目录 一、前言 二、内核调试方法 2.1 内核调试概述 2.2 学会分析内核源程序 2.3调试方法介绍 三、内核打印函数 3.1内核镜像解压前的串口输出函数 3.2 内核镜像解压后的串口输出函数 3.3 内核打印函数 四、获取内核信息 4.1系统请求键 4.2 通过/proc 接口 4.3 通过…

ES 如何将国际标准时间格式进行格式化与调整时区

需求,日志收集的时候,时间格式是国际标准时间格式。形如yyyy-MM-ddTHH:mm:ss.SSS。 (2023-12-05T02:45:50.282Z)这个时区也不对,那如何将此类型的时间,进行格式化呢? 本篇文章体统一个案例&…