记录-bigdata-使用scala语言,使用sparksql,spark算子进行数据统计---接上一篇文章

有问题可以私聊我交流

前面的看我的上两篇文章即可

上一篇是把数据清洗到dwd层

这一篇是根据dwd层的数据进行数据分析

分析完的数据放到mysql里

直接上代码

//上一篇文章已经把数据从ods层清洗到了dwd层了
//这一篇文章,我们直接从dwd层抽取数据,进行数据分析
//根据dwd层中的订单表和客户表,找出消费额最高的五位用户,存入mysql中
    val sparkSession = SparkSession
      .builder()
      .appName("topfive")
      .enableHiveSupport()
      .getOrCreate()

    def saveMysql(sparkSession: SparkSession,tableName:String): DataFrame ={
      val URL = "jdbc:mysql:// 数据库IP地址  / 库名"
      val jdbcMap=Map(
          "driver" -> "com.mysql.jdbc.Driver",
          "url"->URL,
        "dbtable"->tableName,
        "user"->"root",
        "password"->"123456"
      )
      sparkSession.read.format("jdbc").options(jdbcMap).load()
    }

    sparkSession.sql("use dwd")
    val DF = sparkSession.sql(
      """
        |select * from (
        |select custkey,name,total,rank() over (order by total desc ) as priceRank
        |from (
        |select dcustomer.custkey,name, sum(totalprice) as total
        |from dcustomer
        |left join dwdorders on dcustomer.custkey = dwdorders.custkey
        |group by dcustomer.custkey,name
        |) cust_total ) temp  where priceRank <= 5
        |""".stripMargin)


        DF.createOrReplaceTempView("temp")


    val sqlDF = saveMysql(sparkSession,"topfive")
    sqlDF.createOrReplaceTempView("topfive")
    sparkSession.sql(
      """
        |insert overwrite table topfive
        |select * from temp
        |""".stripMargin)


    sparkSession.close()

后面的也看我的上两篇文章即可

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值