您的位置:首页 > 其它

一个使用scala+spark分析客户购买历史记录的例子

2017-03-13 00:00 323 查看
最近看到一个使用scala+spark分析客户购买历史记录的例子。这个例子读取客户购买产品的历史记录文件,然后做4个统计分析:
1、总的购买次数;
2、不重复的客户人数;
3、总的产品销售收入;
4、最受欢迎的商品是什么。
用scala实现上述的4个统计,代码非常少。主要代码如下:
//读取CSV文件,把数据转换成(user,product,price)这样的元组数据 valdata=sc.textFile("data/UserPurchaseHistory.csv") .map(line=>line.split(",")) .map(purchaseRecord=>(purchaseRecord(0),purchaseRecord(1),purchaseRecord(2))) //统计购买商品的总数 valnumPurchases=data.count //统计有多少个用户(不重复的) valuniqueUsers=data.map{case(user,_,_)=>user}.distinct().count //统计总收入 valtotalRevenue=data.map{case(_,_,price)=>price.toDouble}.sum //寻找最受欢迎的产品。这里的collect方法仅仅建议测试中使用。 valproductsByPopularity=data .map{case(_,product,_)=>(product,1)} .reduceByKey(_+_) .collect .sortBy(-_._2) valmostPopular=productsByPopularity(0)

用scala写出的代码确实非常短,很简练。如果是换成用java来写的话,代码会很长,结构也会很复杂。Scala实现的一个缺陷就是:因为语法灵活,允许省略很多东西。例如,省略方法括号,对那些无关紧要的变量用下划线“_”表示。如果换一个不熟悉scala的人来看代码,有可能觉得在看天书一样。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  scala Spark Framework
相关文章推荐