SparkSql與Redis綜合練習
資料
A0001 202.106.196.115 手機 iphone8 8000
A0002 202.106.196.116 服裝 Tshirt 450
A0003 202.106.196.117 藥品 阿莫西林 40
A0004 202.106.196.118 藥品 板藍根 23
A0005 202.106.196.119 手機 iphone9 8000
A0006 202.106.196.120 服裝 Tshirt 320
A0007 202.106.196.121 藥品 阿莫西林 40
A0008 202.106.196.122 藥品 板藍根 23
A0009 202.106.196.123 手機 iphone10 8000
A0010 202.106.196.124 服裝 Tshirt 450
A0011 202.106.196.125 藥品 阿莫西林 40
A0012 202.106.196.126 藥品 板藍根 23
A0013 202.106.196.127 手機 iphone11 8000
A0014 202.106.196.128 服裝 Tshirt 450
A0015 202.106.196.129 藥品 阿莫西林 40
A0016 202.106.196.130 藥品 板藍根 23
A0017 202.106.196.131 手機 iphone12 9999
A0018 202.106.196.132 服裝 Tshirt 340
需求
問題1.計算出總的成交量總額(結果儲存到redis中)
問題2.計算每個商品分類的成交量(結果儲存到redis中)
問題3.計算每個省份的成交總額(結果儲存到redis)
scala程式碼
package com.hm.spark.day03
import org.apache.commons.pool2.impl.GenericObjectPoolConfig
import org.apache.spark.sql.{DataFrame, Row, SparkSession}
import redis.clients.jedis.{Jedis, JedisPool}
/**
* 問題1.計算出總的成交量總額(結果儲存到redis中)
* 問題2.計算每個商品分類的成交量(結果儲存到redis中)
* 問題3.計算每個省份的成交總額(結果儲存到redis)
*/
object HomeWork1 extends App {
private val spark: SparkSession = SparkSession.builder().master("local[2]").appName("test")
.getOrCreate()
private val df: DataFrame = spark.read.csv("D://tmp/test.csv").toDF("id", "ip", "kind", "detail", "price")
df.show()
df.createTempView("tmp")
//totalTurnOver(df)
getPerTurnOver(df)
//問題1.計算出總的成交量總額(結果儲存到redis中)
def totalTurnOver(df:DataFrame): Unit ={
val sql =
"""
|select sum(price) total
|from
|tmp
|""".stripMargin
val result: DataFrame = spark.sql(sql)
val rows: Array[Row] = result.take(1)
println(rows.mkString("Array(", ", ", ")"))
val total: Double = rows(0).getDouble(0)
SaveSumToRedis(total)
}
//問題2.計算每個商品分類的成交量(結果儲存到redis中)
def getPerTurnOver(df:DataFrame): Unit ={
val sql =
"""
|select kind,sum(price) total
|from
|tmp
|group by kind
|""".stripMargin
val result: DataFrame = spark.sql(sql)
val rows1: Array[Row] = result.collect()
val jedis: Jedis = getJedis
for(x<-rows1){
val kind: String = x.getString(0)
val price: Double = x.getDouble(1)
jedis.hset("sales",kind,price.toString)
}
}
def getJedis: Jedis = {
val config = new GenericObjectPoolConfig()
val pool = new JedisPool(config, "mypc01", 6379)
val jedis: Jedis = pool.getResource
jedis
}
def SaveSumToRedis(num: Double): Unit = {
val jedis: Jedis = getJedis
jedis.hset("sales", "totalprice", num.toString)
}
}
相關文章
- Java基礎 --- 綜合練習Java
- ADMIN07 - 綜合練習
- 迴圈高階綜合練習
- 綜合練習——洗牌發牌Easy版
- Day5-SQL綜合練習(Datawhale)SQL
- 程式設計實踐(Pandas)綜合練習1程式設計
- U7-11課綜合練習+12課階段測評練習——複習練習題目
- 物件導向綜合訓練物件
- 『政善治』Postman工具 — 13、Postman介面測試綜合練習Postman
- 二維陣列和函式綜合程式設計練習陣列函式程式設計
- 知識學習綜合
- Java基礎 --- 物件導向綜合訓練Java物件
- 【綜合複習_網路部分】
- Java入門第二季 6-1綜合練習程式碼Java
- Java攻城獅第二季綜合練習——初學者好懂版Java
- 綜合練習——尋找有潛力的bilibili百大UP主(1)
- Redis 命令練習彙總Redis
- SparkSQL練習:對學生選課成績進行分析計算SparkSQL
- C++遠征之起航篇第5章 綜合練習 程式碼參考C++
- 分散式快取綜合指南:Kubernetes + Redis + Spring Boot分散式快取RedisSpring Boot
- 【pandas學習筆記】綜合整理筆記
- SparkSQL與Hive metastore ParquetSparkSQLHiveAST
- SparkSQL部署與簡單使用SparkSQL
- Spark學習進度7-綜合案例Spark
- python綜合學習七之TensorFlow初識Python
- 綜合設計——多源異構資料採集與融合應用綜合實踐
- Vivado使用技巧(23):綜合執行與OOC
- 前端綜合能力系列之git與gitflow前端Git
- python綜合學習四之Numpy和Pandas(下)Python
- 綜合約束
- 綜合實驗
- makefile--變數與函式的綜合示例變數函式
- ASP.NET CORE[練習22]-Redis6-Microsoft.Extensions.Caching.redisASP.NETRedisROS
- Steam教育在新時代中綜合學習論
- 教資 - 綜合(6)
- 教資 - 綜合(4)
- 教資 - 綜合(1)
- 綜合掃描工具