• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >ruby > 用SparkR探索电商数据

用SparkR探索电商数据

作者:asanalien的专栏 字体:[增加 减小] 来源:互联网

asanalien的专栏通过本文主要向大家介绍了Spark,SparkR,电商等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

        R是数据科学家中最流行的编程语言之一, 但目前R的运行受限于单机的内存容量,无法满足大数据时代的海量数据处理需求。Apache顶级开源项目Spark是Hadoop之后备受关注的新一代分布式计算平台,于是,R和Spark的强强结合使得SparkR应运而生。SparkR是一个R语言包,它提供了轻量级的方式,使得可以在R语言中使用Apache Spark。通过用R语言编写Spark程序,允许数据科学家分析大规模的数据集,并通过R shell交互式地在SparkR上运行作业。2015年4月,SparkR已经合并到Apache Spark中,并随着Spark 1.4版本一起发布!

        本人最近也体验了一把SparkR,采用的数据是一份搜索产品的明细,是一家购物比价搜索网站的2012年双11节前节后一周和2013年618前后一周的数据。代码是指导手下的实习生做的,Spark版本是2.1.1,话不多说,直接上效果大笑

 

(一)数据读入

df<-read.df("file:///home/baoyu/datas/JT_data.csv","csv",header="true") #本地模式,创建SparkR DataFrame head(df)

 

(二)部分字段统计:

b=summarize(groupBy(df, df$SHOP), count = n(df$SHOP)) 
head(arrange(b, desc(b$count)))
c=summarize(groupBy(df, df$MAIN_CATE), count = n(df$MAIN_CATE))
head(arrange(c, desc(c$count)))

 

 

(三)搜索量排名

       搜索量排前十名的网店:

 

createOrReplaceTempView(b,"b")      # 创建临时表
b1=head(arrange(b, desc(b$count)),10)
bs1=sum(b1$count)
bs2=sql("select sum(count) from b") # 类SQL查询
bb=(as.data.frame(bs2)-bs1)[,1]     # 转化为R DataFrame
row=c(' Other ',bb)
b1=rbind(b1,row)
b1[,2]=as.numeric(b1[,2])
b1=b1[order(b1[,2],decreasing=T),]
precent=round(b1$count/sum(b1$count)*100)
label=paste(paste(c("Other ","淘宝网","京东商城","当当网商城","当当网","亚马逊中国","易迅网"," 1号店","苏宁易购","唯品会","库巴"),":"),precent,"%",sep="")
pie(b1[,2],labels=label,main="TOP10 SHOP",radius=1)


 

 

 

 

通过跟上面类似的代码分析,可以得到搜索量排前十名的城市:
 
 

 

 

(四)价格分布

createOrReplaceTempView(df,"df")
sparkR.session()

 

把价格分成几个区间

g1=sql("select count(*) from df WHERE PRICE<500")
g2=sql("select count(*) from df WHERE PRICE>500 and PRICE<5000")
g3=sql("select count(*) from df WHERE PRICE>5000 and PRICE<10000")
g4=sql("select count(*) from df WHERE PRICE>10000 and PRICE<50000")
g5=sql("select count(*) from df WHERE PRICE>50000 and PRICE<500000")
g6=sql("select count(*) from df WHERE PRICE>500000 and PRICE<1000000")
g1=as.data.frame(g1)
g2=as.data.frame(g2)
g3=as.data.frame(g3)
g4=as.data.frame(g4)
g5=as.data.frame(g5)
g6=as.data.frame(g6)
price=rbind(g1,g2,g3,g4,g5,g6)
par(mfrow=c(1,1))
hist(price[,1])


 

 

 

row=c("<500","500~1000","1000~5000","5000~50000","50000~500000","500000~1000000")
column=c("connt")
dimnames(price)=list(row,column)
price


 

 

 

 

(五)时段分布

下面看一下,各个时段的搜索量变化。

 

t =sql("SELECT SUBSTRING(TIME,-5,2) as time FROM df")
t1=summarize(groupBy(t, t$time), count = n(t$time))
t2=arrange(t1, asc (t1$time))
t3=as.data.frame(t2)
plot(t3,type='b')
barplot(t(t3))


 

可见,10点以后进入搜索的高峰期,一直持续到午夜。

 

在大数据的时代背景下,Spark支持R API对熟悉R语言的数据科学家来说是一个利器。更多关于SparkR的资料,可以参考官方网站:http://spark.apache.org/docs/latest/sparkr.html。

在下一篇《用SparkR探索电商数据(二)》的文章中,我们将贴上机器学习的案例。

 

您可能想查找下面的文章:

  • 用SparkR探索电商数据

相关文章

  • 深入理解Ruby中的block概念
  • windows下安装ruby与rails时遇到的问题总结
  • Ruby实现的各种排序算法
  • 对优化Ruby on Rails性能的一些办法的探究
  • Ruby一行代码实现的快速排序
  • ruby 异常处理:rescue
  • 举例初步讲解Ruby中的正则表达式
  • Ruby中处理时间的一些基本操作
  • 使用rbenv来管理Ruby版本的方法
  • ruby 一些简单的例子

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Ruby编程中关于中断和返回的用法教程
    • Ruby面向对象编程中类的方法与类的扩展
    • 深入讲解Ruby中Block代码快的用法
    • 详解Ruby中的异常
    • 实例解析Ruby设计模式编程中Strategy策略模式的使用
    • 详解Ruby中的单件方法和单件类
    • 几个加速Ruby on Rails的编程技巧
    • Ruby中的反射(Reflection)应用实例
    • Ruby实现命令行中查看函数源码的方法
    • Windows下Ruby+Watir自动化测试的环境搭建及数据读取

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有