现要求统计用户收藏数据中,每个用户收藏商品数量。
1.在Linux上,创建/data/spark3/wordcount目录,用于存储实验所需的数据。
view plain copy
mkdir -p /data/spark3/wordcount
切换目录到/data/spark3/wordcount下,并从http://192.168.1.100:60000/allfiles/spark3/wordcount/buyer_favorite下载实验数据。
view plain copy
cd /data/spark3/wordcount
wget http://192.168.1.100:60000/allfiles/spark3/wordcount/buyer_favorite
2.使用jps查看Hadoop以及Spark的相关进程是否已经启动,若未启动则执行启动命令。
view plain copy
jps
/apps/hadoop/sbin/start-all.sh
view plain copy
/apps/spark/sbin/start-all.sh
将Linux本地/data/spark3/wordcount/buyer_favorite文件,上传到HDFS上的/myspark3/wordcount目录下。若HDFS上/myspark3目录不存在则需提前创建。
view plain copy
hadoop fs -mkdir -p /myspark3/wordcount
hadoop fs -put /data/spark3/wordcount/buyer_favorite /myspark3/wordcount
3.启动spark-shell
view plain copy
spark-shell
4.编写Scala语句,统计用户收藏数据中,每个用户收藏商品数量。
先在spark-shell中,加载数据。
view plain copy
val rdd = sc.textFile(“hdfs://localhost:9000/myspark3/wordcount/buyer_favorite”);
执行统计并输出。
view plain copy
rdd.map(line=> (line.split(’\t’)(0),1)).reduceByKey(+).collect
去重:使用spark-shell,对上述实验中,用户收藏数据文件进行统计。根据商品ID进行去重,统计用户收藏数据中都有哪些商品被收藏。
1.在Linux上,创建/data/spark3/distinct,用于存储实验数据。
view plain copy
mkdir -p /data/spark3/distinct
切换到/data/spark3/distinct目录下,并从http://192.168.1.100:60000/allfiles/spark3/distinct/buyer_favorite下载实验数据。
view plain copy
cd /data/spark3/distinct
wget http://192.168.1.100:60000/allfiles/spark3/distinct/buyer_favorite
2.使用jps查看Hadoop,Spark的进程。保证Hadoop、Spark框架相关进程为已启动状态。
3.将/data/spark3/distinct/buyer_favorite文件,上传到HDFS上的/myspark3/distinct目录下。若HDFS目录不存在则创建。
view plain copy
hadoop fs -mkdir -p /myspark3/distinct
hadoop fs -put /data/spark3/distinct/buyer_favorite /myspark3/distinct
4.在Spark窗口,编写Scala语句,统计用户收藏数据中,都有哪些商品被收藏。
先加载数据,创建RDD。
view plain copy
val rdd = sc.textFile(“hdfs://localhost:9000/myspark3/distinct/buyer_favorite”);
对RDD进行统计并将结果打印输出。
view plain copy
rdd.map(line => line.split(’\t’)(1)).distinct.collect
排序:电商网站都会对商品的访问情况进行统计,现有一个goods_visit文件,存储了电商网站中的各种商品以及此各个商品的点击次数。
商品id(goods_id) 点击次数(click_num)
view plain copy
商品ID 点击次数
1010037 100
1010102 100
1010152 97
1010178 96
1010280 104
1010320 103
1010510 104
1010603 96
1010637 97
现根据商品的点击次数进行排序,并输出所有商品。