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、时间段商品销量波动


相关文章
|
SQL 数据库 数据安全/隐私保护
数据库数据恢复——sql server数据库被加密的数据恢复案例
SQL server数据库数据故障: SQL server数据库被加密,无法使用。 数据库MDF、LDF、log日志文件名字被篡改。 数据库备份被加密,文件名字被篡改。
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
255 3
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
493 0
|
SQL 自然语言处理 数据可视化
狂揽20.2k星!还在傻傻的写SQL吗,那你就完了!这款开源项目,让数据分析像聊天一样简单?再见吧SQL
PandasAI是由Sinaptik AI团队打造的开源项目,旨在通过自然语言处理技术简化数据分析流程。用户只需用自然语言提问,即可快速生成可视化图表和分析结果,大幅降低数据分析门槛。该项目支持多种数据源连接、智能图表生成、企业级安全防护等功能,适用于市场分析、财务管理、产品决策等多个场景。上线两年已获20.2k GitHub星标,采用MIT开源协议,项目地址为https://github.com/sinaptik-ai/pandas-ai。
885 5
|
关系型数据库 MySQL 大数据
大数据新视界--大数据大厂之MySQL 数据库课程设计:MySQL 数据库 SQL 语句调优的进阶策略与实际案例(2-2)
本文延续前篇,深入探讨 MySQL 数据库 SQL 语句调优进阶策略。包括优化索引使用,介绍多种索引类型及避免索引失效等;调整数据库参数,如缓冲池、连接数和日志参数;还有分区表、垂直拆分等其他优化方法。通过实际案例分析展示调优效果。回顾与数据库课程设计相关文章,强调全面认识 MySQL 数据库重要性。为读者提供综合调优指导,确保数据库高效运行。
|
SQL 数据库
数据库数据恢复—SQL Server报错“错误 823”的数据恢复案例
SQL Server数据库附加数据库过程中比较常见的报错是“错误 823”,附加数据库失败。 如果数据库有备份则只需还原备份即可。但是如果没有备份,备份时间太久,或者其他原因导致备份不可用,那么就需要通过专业手段对数据库进行数据恢复。
|
机器学习/深度学习 数据采集 DataWorks
数据分析经典案例重现:使用DataWorks Notebook 实现Kaggle竞赛之房价预测,成为数据分析大神!
Python是目前当之无愧的数据分析第一语言,大量的数据科学家使用Python来完成各种各样的数据科学任务。本文以Kaggle竞赛中的房价预测为例,结合DataWorks Notebook,完成数据加载、数据探索、数据可视化、数据清洗、特征分析、特征处理、机器学习、回归预测等步骤,主要Python工具是Pandas和SKLearn。本文中仅仅使用了线性回归这一最基本的机器学习模型,读者可以自行尝试其他更加复杂模型,比如随机森林、支持向量机、XGBoost等。
1154 8
|
SQL 数据挖掘 数据库
这可能是最适合解决 SQL 数据分析痛点的编程语言
数据分析师常需处理各种数据操作,如过滤、分组、汇总等,SQL 在这些基本需求上表现得心应手。然而,面对本地文件数据或更复杂需求时,SQL 的局限性显现。SPL(Structured Process Language)则提供了更灵活的解决方案,无需数据库环境,直接从文件计算,代码简洁易懂,调试工具强大,极大提升了数据分析的效率和交互性。
|
SQL 数据可视化 IDE
SQL做数据分析的困境,查询语言无法回答的真相
SQL 在简单数据分析任务中表现良好,但面对复杂需求时显得力不从心。例如,统计新用户第二天的留存率或连续活跃用户的计算,SQL 需要嵌套子查询和复杂关联,代码冗长难懂。Python 虽更灵活,但仍需变通思路,复杂度较高。相比之下,SPL(Structured Process Language)语法简洁、支持有序计算和分组子集保留,具备强大的交互性和调试功能,适合处理复杂的深度数据分析任务。SPL 已开源免费,是数据分析师的更好选择。
|
SQL 数据库
gbase 8a 数据库 SQL优化案例-关联顺序优化
gbase 8a 数据库 SQL优化案例-关联顺序优化