Spark SQL案例【电商购买数据分析】

简介: Spark SQL案例【电商购买数据分析】

数据说明

Spark 数据分析 (Scala)

import org.apache.spark.rdd.RDD
import org.apache.spark.sql.{DataFrame, SparkSession}
import org.apache.spark.{SparkConf, SparkContext}
import java.io.{File, PrintWriter}
object Taobao {
  case class Info(userId: Long,itemId: Long,action: String,time: String)
  def main(args: Array[String]): Unit = {
    // 使用2个CPU核心
    val conf = new SparkConf().setMaster("local[2]").setAppName("tao bao product")
    val spark = SparkSession.builder().config(conf).getOrCreate()
    import spark.implicits._
    val sc = spark.sparkContext
    // 从本地文件系统加载文件生成RDD对象
    val rdd: RDD[Array[String]] = sc.textFile("data/practice2/Processed_UserBehavior.csv").map(_.split(","))
    // RDD 转为 DataFrame对象
    val df: DataFrame = rdd.map(attr => Info(attr(0).trim.toInt, attr(1).trim.toInt, attr(2), attr(3))).toDF()
    // Spark 数据分析
    //1.用户行为信息统计
    val behavior_count: DataFrame = df.groupBy("action").count()
    val result1 = behavior_count.toJSON.collectAsList().toString
//    val writer1 = new PrintWriter(new File("data/practice2/result1.json"))
//    writer1.write(result1)
//    writer1.close()
    //2.销量前十的商品信息统计
    val top_10_item:Array[(String,Int)] = df.filter(df("action") === "buy").select(df("itemId"))
      .rdd.map(v => (v(0).toString,1))
      .reduceByKey(_+_)
      .sortBy(_._2,false)
      .take(10)
    val result2 = sc.parallelize(top_10_item).toDF().toJSON.collectAsList().toString
//    val writer2 = new PrintWriter(new File("data/practice2/result2.json"))
//    writer2.write(result2)
//    writer2.close()
    //3.购物数量前十的用户信息统计
    val top_10_user: Array[(String,Int)] = df.filter(df("action") === "buy").select(df("userId"))
      .rdd.map(v => (v(0).toString, 1))
      .reduceByKey(_ + _)
      .sortBy(_._2, false)
      .take(10)
    val result3 = sc.parallelize(top_10_user).toDF().toJSON.collectAsList().toString
//    val writer3 = new PrintWriter(new File("data/practice2/result3.json"))
//    writer3.write(result3)
//    writer3.close()
    // 4.时间段内平台商品销量统计
    val buy_order_by_date: Array[(String,Int)] = df.filter(df("action") === "buy").select(df("time"))
      .rdd.map(v => (v.toString().replace("[","").replace("]","").split(" ")(0),1)
    ).reduceByKey(_+_).sortBy(_._1).collect()
    //转为dataframe
//    buy_order_by_date.foreach(println)
    /*
    (2017-11-25,21747)
    (2017-11-26,22265)
    (2017-11-27,24583)
    (2017-11-28,23153)
    (2017-11-29,24102)
    (2017-11-30,23994)
    (2017-12-01,23153)
    (2017-12-02,28512)
     */
    val result4 = sc.parallelize(buy_order_by_date).toDF().toJSON.collectAsList().toString
    val writer4 = new PrintWriter(new File("data/practice2/result4.json"))
    writer4.write(result4)
    writer4.close()
    sc.stop()
    spark.stop()
  }
}

数据可视化(pyecharts)

1、 用户行为数据分析

2、销量前 10 的商品数据

3、用户购买量前 10

4、时间段商品销量波动


相关文章
|
2月前
|
SQL 存储 数据挖掘
大模型与数据分析:探索Text-to-SQL(下)
大模型与数据分析:探索Text-to-SQL(下)
292 3
|
2月前
|
SQL 自然语言处理 数据挖掘
大模型与数据分析:探索Text-to-SQL(上)
大模型与数据分析:探索Text-to-SQL(上)
1065 0
|
2月前
|
SQL 自然语言处理 数据挖掘
大模型与数据分析:探索Text-to-SQL(中)
大模型与数据分析:探索Text-to-SQL(中)
423 0
|
29天前
|
分布式计算 数据挖掘 数据处理
Spark如何支持实时数据分析?
【6月更文挑战第16天】Spark如何支持实时数据分析?
22 3
|
2月前
|
SQL 分布式计算 Spark
【指标计算】Spark 计算指定用户与其他用户购买的相同商品
该代码示例使用Spark SQL解决查找指定用户(user01)与其他用户共同购买商品的问题。首先,创建SparkSession和模拟购买数据,然后通过SQL查询获取user01购买的商品集合。接着,对比所有用户购买记录,筛选出购买过相同商品且非user01的用户。输出显示了这些匹配用户的商品ID。关键在于使用`array_contains`函数检查商品是否在指定用户的购买列表中。遇到类似需求时,可参考Spark SQL官方函数文档。欢迎讨论复杂指标计算问题。
|
2月前
|
SQL 数据挖掘 HIVE
【Hive SQL 每日一题】在线课程学生行为数据分析
该数据分析师任务是分析在线学习平台的学生行为,以优化课程内容和学习体验。提供的数据包括`students`表(含学生ID、姓名、年龄和性别)和`course_activity`表(含活动ID、学生ID、课程ID、活动日期和学习时长)。分析涉及:1) 学生参加的课程数量,2) 课程总学习时长,3) 按性别分组的平均学习时长,4) 学生首次参加的课程及日期,5) 学生最近一次学习的时长,以及6) 参与学生最多的课程。所有查询都使用了SQL,部分涉及窗口函数和分组统计。数据集可在给定链接下载。
|
2月前
|
SQL HIVE UED
【Hive SQL 每日一题】分析电商平台的用户行为和订单数据
作为一名数据分析师,你需要分析电商平台的用户行为和订单数据。你有三张表:`users`(用户信息),`orders`(订单信息)和`order_items`(订单商品信息)。任务包括计算用户总订单金额和数量,按月统计订单,找出最常购买的商品,找到平均每月最高订单金额和数量的用户,以及分析高消费用户群体的年龄和性别分布。通过SQL查询,你可以实现这些分析,例如使用`GROUP BY`、`JOIN`和窗口函数来排序和排名。
|
2月前
|
SQL 分布式计算 关系型数据库
Spark编程实验三:Spark SQL编程
Spark编程实验三:Spark SQL编程
46 1
|
2月前
|
SQL 分布式计算 数据库
Spark SQL
Spark SQL
43 1
|
1月前
|
SQL JSON 分布式计算