真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

電商大數(shù)據(jù)項目-推薦系統(tǒng)實戰(zhàn)(一)

電商大數(shù)據(jù)項目-推薦系統(tǒng)實戰(zhàn)(一)環(huán)境搭建以及日志,人口,商品分析
https://blog.51cto.com/6989066/2325073
電商大數(shù)據(jù)項目-推薦系統(tǒng)實戰(zhàn)之推薦算法
https://blog.51cto.com/6989066/2326209
電商大數(shù)據(jù)項目-推薦系統(tǒng)實戰(zhàn)之實時分析以及離線分析
https://blog.51cto.com/6989066/2326214

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設,密云企業(yè)網(wǎng)站建設,密云品牌網(wǎng)站建設,網(wǎng)站定制,密云網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,密云網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

開源項目,請勿用于任何商業(yè)用途。
源代碼地址:https://github.com/asdud/Bigdata_project

本項目是基于Spark MLLib的大數(shù)據(jù)電商推薦系統(tǒng)項目,使用了scala語言和java語言?;趐ython語言的推薦系統(tǒng)項目會另外寫一篇博客。在閱讀本博客以前,需要有以下基礎:
1.linux的基本命令
2.至少有高中及以上的數(shù)學基礎。
3.至少有java se基礎,會scala語言和Java EE更佳(Jave EE非必需,但是可以幫助你更快理解項目的架構)。
4.有github賬戶,并且至少知道git clone,fork,branch的概念。
5.有網(wǎng)絡基礎,至少知道服務器端和客戶端的區(qū)別。
6.有大數(shù)據(jù)基礎,最好會Hadoop,HDFS,MapReduce,Sqoop,HBase,Hive,Spark,Storm。
7.有MySQL數(shù)據(jù)庫基礎,至少會最基本的增刪改查。
你要是大神,估計看這篇博客也沒有任何用處,至少給點意見和建議唄!

PC配置要求
1.CPU:主流CPU即可
2.內存RAM:至少8G,推薦16G及以上,32G不浪費。
3.硬盤:由于VM對I/O流讀取速度要求高,推薦使用256G及以上固態(tài)硬盤(SATA3即可.NVME更好),系統(tǒng)盤需要60-100G,其余的專門劃一個盤用于安裝虛擬機。或者采用傲騰內存+機械硬盤的方案。
關于傲騰內存的介紹和裝機方法
https://product.pconline.com.cn/itbk/diy/memory/1806/11365945.html
4.GPU顯卡;無要求。但是如果你想學習深度學習框架的話,可考慮1060 6g甚至是2080TI。
5.網(wǎng)速:CentOS 8GB多,HDP接近7個G,CDH幾個包加起來2.5G。自己算算需要下載多長時間,或者考慮用U盤從別人那里拷貝?

你也可以考慮用阿里云,騰訊云等云主機。

步驟一:
搭建CentOS+HDP的環(huán)境,或者CentOS+CDH的環(huán)境,這些都是開源的,不用擔心版權問題,企業(yè)上一般也是用這兩種方案。

在這里我采用的是CentOS+HDP的方案
大數(shù)據(jù)之搭建HDP環(huán)境,以三個節(jié)點為例(上——部署主節(jié)點以及服務)
https://blog.51cto.com/6989066/2173573
大數(shù)據(jù)之搭建HDP環(huán)境,以三個節(jié)點為例(下——擴展節(jié)點,刪除節(jié)點,以及部署其他服務)
https://blog.51cto.com/6989066/2175476

也可以采用CentOS+CDH的方案
搭建CDH實驗環(huán)境,以三個節(jié)點為例的安裝配置
https://blog.51cto.com/6989066/2296064

開發(fā)工具:Eclipse oxygen版本或者IDEA
代碼實現(xiàn)部分
1.數(shù)據(jù):用戶查詢日志來源
搜狗實驗室
.https://www.sogou.com/labs/resource/q.php
我選的迷你版
介紹:
搜索引擎查詢日志庫設計為包括約1個月(2008年6月)Sogou搜索引擎部分網(wǎng)頁查詢需求及用戶點擊情況的網(wǎng)頁查詢日志數(shù)據(jù)集合。為進行中文搜索引擎用戶行為分析的研究者提供基準研究語料

格式說明:
數(shù)據(jù)格式為

訪問時間\t用戶ID\t[查詢詞]\t該URL在返回結果中的排名\t用戶點擊的順序號\t用戶點擊的URL

其中,用戶ID是根據(jù)用戶使用瀏覽器訪問搜索引擎時的Cookie信息自動賦值,即同一次使用瀏覽器輸入的不同查詢對應同一個用戶ID

2.首先新建一個Maven工程MyMapReduceProject,然后更新pom.xml文件
pom文件地址
https://github.com/asdud/Bigdata_project/blob/master/MyMapReduceProject/pom.xml
電商大數(shù)據(jù)項目-推薦系統(tǒng)實戰(zhàn)(一)
這個時候就會自動下載對應的依賴的jar包

(一)案例1:搜狗日志查詢分析
?查詢搜索結果排名第1點,擊次序排在第2的數(shù)據(jù)
使用MapReduce進行分析處理
https://github.com/asdud/Bigdata_project/blob/master/MyMapReduceProject/src/main/java/day0629/sogou/SogouLogMain.java
https://github.com/asdud/Bigdata_project/blob/master/MyMapReduceProject/src/main/java/day0629/sogou/SogouLogMapper.java

?使用Spark進行分析和處理
首先使用Ambari,添加Spark2的服務;由于依賴其他的服務,比如Hive等等,需要在啟動Ambari Server的時候,指定MySQL的JDBC驅動。
登錄spark-shell,需要用下面的方式:
spark-shell --master yarn-client
電商大數(shù)據(jù)項目-推薦系統(tǒng)實戰(zhàn)(一)
ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar
jdbc-driver地址與你安裝mysql-connector-java.jar目錄對應。

(二)案例2:人口分析案例
本案例假設我們需要對某個省的人口 (1 億) 性別還有身高進行統(tǒng)計,需要計算出男女人數(shù),男性中的最高和最低身高,以及女性中的最高和最低身高。本案例中用到的源文件有以下格式, 三列分別是 ID,性別,身高 (cm)。

?使用Scala程序生成測試數(shù)據(jù)(大概1.3G)
https://github.com/asdud/Bigdata_project/blob/master/MySparkProject/src/main/java/day0629/PeopleInfo/PeopleInfoFileGenerator.scala
注意:可以將數(shù)據(jù)量減小一下,這樣處理的時候會短一些。示例中是1億條記錄,可以改為1萬條記錄。
并將生成的數(shù)據(jù)放到HDFS上:
hdfs dfs -put sample_people_info.txt /myproject/data

案例分析(使用MapReduce)
https://github.com/asdud/Bigdata_project/tree/master/MyMapReduceProject/src/main/java/day0629/peopleinfo

(三)案例3:電商訂單銷售數(shù)據(jù)分析

(四)Spark的累加器和廣播變量
由于spark是分布式的計算,所以使得每個task間不存在共享的變量,而為了實現(xiàn)共享變量spark實現(xiàn)了兩種類型 - 累加器與廣播變量。

1.累加器(accumulator)是Spark中提供的一種分布式的變量機制,其原理類似于mapreduce,即分布式的改變,然后聚合這些改變。累加器的一個常見用途是在調試時對作業(yè)執(zhí)行過程中的事件進行計數(shù)。
示例:
val accum = sc.accumulator(10, "My Accumulator")
sc.parallelize(Array(1,2,3,4)).foreach(x => accum+=x)
println(accum.value)

最終結果:20

2.廣播變量允許程序員將一個只讀的變量緩存在每臺機器上,而不用在任務之間傳遞變量。廣播變量可被用于有效地給每個節(jié)點一個大輸入數(shù)據(jù)集的副本。Spark還嘗試使用高效地廣播算法來分發(fā)變量,進而減少通信的開銷。
示例:將用戶信息存入廣播變量。
case class UserInfo(userID:Int,userName:String,userAge:Int)
val broadcastVar = sc.broadcast(UserInfo(100,"Tom",23))
broadcastVar.value

四、各區(qū)域熱門商品
(一)模塊介紹
電商網(wǎng)站運營中,需要對每個區(qū)域用戶關心的商品進行統(tǒng)計分析,支持用戶決策。
用途:
?分析各區(qū)域對產品的不同需求,進行差異化研究,例如北京用戶喜歡手機,上海用戶喜歡汽車。
?指導商品折扣,推廣策略
(二)需求分析
(1)如何定義用戶關心的商品?
?通過用戶對商品的點擊量來衡量商品熱度

?復雜模型:通過用戶點擊+購買以及搜藏等綜合數(shù)據(jù)對商品進行評價
商品熱門程度得分模型 = 點擊次數(shù)2+購買次數(shù)5+搜藏次數(shù)*3
其中2,5,3為得分權重

(2)如何獲取區(qū)域
?通過用戶點擊日志,訂單可以獲取地域
① 日志數(shù)據(jù),來源與日志系統(tǒng),flume ,t+1也可以每30分鐘
② 訂單來源于數(shù)據(jù)庫,sqoop,t+1也可以每30分鐘
?數(shù)據(jù)庫一定是讀寫分離
?sqoop從讀的數(shù)據(jù)庫導數(shù)據(jù),所以會造成數(shù)據(jù)與真實業(yè)務庫有一定的延時
(3)深度思考:如何去除爬蟲水軍
(三)技術方案
?數(shù)據(jù)采集邏輯(ETL)
?電商日志一般存儲在日志服務器,需要通過Flume拉取到HDFS上
?數(shù)據(jù)的清洗邏輯
?使用MapReduce進行數(shù)據(jù)清洗
?使用Spark進行清洗
?各區(qū)域熱門商品的分析計算
?使用Hive進行數(shù)據(jù)的分析和處理
?使用Spark SQL進行數(shù)據(jù)的分析和處理
?思考:能否采用MapReduce進行數(shù)據(jù)的分析和處理

(四)實驗數(shù)據(jù)及說明

?表Product(產品信息表)
列名 描述 數(shù)據(jù)類型 空/非空 約束條件
product_id 商品號 varchar(18) Not null
product_name 商品名稱 varchar(20) Not null
marque 商品型號 varchar(10) Not null
barcode 倉庫條碼 varchar Not null
price 商品價格 double Not null
brand_id 商品品牌 varchar(8) Not null
market_price 市場價格 double Not null
stock 庫存 int Not null
status 狀態(tài) int Not null
補充說明 Status:下架-1,上架0,預售(1)

?表Area_info(地區(qū)信息表)
列名 描述 數(shù)據(jù)類型 空/非空 約束條件
area_id 地區(qū)編號 varchar(18) Not null
area_name 地區(qū)名稱 varchar(20) Not null
補充說明

?表order_info(訂單信息表)
列名 描述 數(shù)據(jù)類型 空/非空 約束條件
order_id 訂單ID varchar(18) Not null
order_date 訂單日期 varchar(20) Not null
user_id 用戶ID varchar(20)
product_id 商品ID varchar(20)
補充說明

?表user_click_log(用戶點擊信息表)
列名 描述 數(shù)據(jù)類型 空/非空 約束條件
user_id 用戶ID varchar(18) Not null
user_ip 用戶IP varchar(20) Not null
url 用戶點擊URL varchar(200)
click_time 用戶點擊時間 varchar(40)
action_type 動作名稱 varchar(40)
area_id 地區(qū)ID varchar(40)
補充說明 action_type:1收藏,2加入購物車,3點擊

?表area_hot_product(區(qū)域熱門商品表):最終結果表
列名 描述 數(shù)據(jù)類型 空/非空 約束條件
area_id 地區(qū)ID varchar(18) Not null
area_name 地區(qū)名稱 varchar(20) Not null
product_id 商品ID varchar(200)
product_name 商品名稱 varchar(40)
pv 訪問量 BIGINT
補充說明
(五)技術實現(xiàn)
① 使用Flume采集用戶點擊日志
?通常使用shell腳本執(zhí)行日志采集
?復雜情況,使用可視化的ETL工具,來進行Flume Agent控制
下面是配置文件,注意HDFS的端口號。

② 數(shù)據(jù)的清洗
?需要將用戶點擊日志里面對于商品的點擊識別出來
?過濾不滿足6個字段的數(shù)據(jù)
?過濾URL為空的數(shù)據(jù),即:過濾出包含http開頭的日志記錄

?實現(xiàn)方式一:使用MapReduce程序進行數(shù)據(jù)的清洗

?實現(xiàn)方式二:使用Spark程序進行數(shù)據(jù)的清洗

注意:如果不希望在Spark執(zhí)行中,打印過多的日志,可以使用下面的語句:
Logger.getLogger("org.apache.spark").setLevel(Level.ERROR)
Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF)
③ 各區(qū)域熱門商品熱度統(tǒng)計:基于Hive和Spark SQL
?方式一:使用Hive進行統(tǒng)計

?方式二:使用Spark SQL進行統(tǒng)計

在Spark SQL中執(zhí)行的SQL:
select a.area_id,a.area_name,p.product_id,product_name,count(c.product_id) from area a,product p,clicklog c where a.area_id=c.area_id and p.product_id=c.product_id group by a.area_id,a.area_name,p.product_id,p.product_name;


名稱欄目:電商大數(shù)據(jù)項目-推薦系統(tǒng)實戰(zhàn)(一)
鏈接URL:http://weahome.cn/article/iggjei.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部