国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

全國(guó)職業(yè)院校技能大賽-大數(shù)據(jù) 離線數(shù)據(jù)處理模塊-指標(biāo)計(jì)算

這篇具有很好參考價(jià)值的文章主要介紹了全國(guó)職業(yè)院校技能大賽-大數(shù)據(jù) 離線數(shù)據(jù)處理模塊-指標(biāo)計(jì)算。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

賽題來(lái)源2023年全國(guó)職業(yè)院校技能大賽賽題第1套任務(wù)B中指標(biāo)計(jì)算模塊

子任務(wù)三:指標(biāo)計(jì)算

編寫Scala代碼,使用Spark計(jì)算相關(guān)指標(biāo)。

注:在指標(biāo)計(jì)算中,不考慮訂單信息表中order_status字段的值,將所有訂單視為有效訂單。計(jì)算訂單金額或訂單總金額時(shí)只使用final_total_amount字段。需注意dwd所有的維表取最新的分區(qū)。

?第一題

根據(jù)dwd層表統(tǒng)計(jì)每個(gè)省份、每個(gè)地區(qū)、每個(gè)月下單的數(shù)量和下單的總金額,存入MySQL數(shù)據(jù)庫(kù)shtd_result的provinceeverymonth表中(表結(jié)構(gòu)如下),然后在Linux的MySQL命令行中根據(jù)訂單總數(shù)、訂單總金額、省份表主鍵均為降序排序,查詢出前5條,將SQL語(yǔ)句復(fù)制粘貼至客戶端桌面【Release\任務(wù)B提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下,將執(zhí)行結(jié)果截圖粘貼至客戶端桌面【Release\任務(wù)B提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下

字段

類型

中文含義

備注

provinceid

int

省份表主鍵

provincename

text

省份名稱

regionid

int

地區(qū)表主鍵

regionname

text

地區(qū)名稱

totalconsumption

double

訂單總金額

當(dāng)月訂單總金額

totalorder

int

訂單總數(shù)

當(dāng)月訂單總數(shù)

year

int

訂單產(chǎn)生的年

month

int

訂單產(chǎn)生的月

import org.apache.spark.SparkConf
import org.apache.spark.sql.{SaveMode, SparkSession}

object Compute01 {
  def main(args: Array[String]): Unit = {
    System.setProperty("HADOOP_USER_NAME", "atguigu")

    // TODO 創(chuàng)建spark連接
    val conf = new SparkConf().setMaster("local[*]").setAppName("Compute01")
    val spark: SparkSession = SparkSession.builder().config(conf).enableHiveSupport().getOrCreate()

    // 開(kāi)啟動(dòng)態(tài)分區(qū)
    spark.conf.set("hive.exec.dynamic.partition.mode", "nonstrict")
    // 關(guān)閉打印日志
    spark.sparkContext.setLogLevel("OFF")

    // TODO 執(zhí)行核心查詢SQL
    val result = spark.sql(
      """
        |select
        |    province.id provinceid,
        |    province.name provincename,
        |    region.id regionid,
        |    region.region_name regionname,
        |    sum(final_total_amount)
        |       over(partition by province.id,region.id,year(od.create_time),month(od.create_time)) totalconsumption,
        |    count(od.id)
        |       over(partition by province.id,region.id,year(od.create_time),month(od.create_time)) totalorder,
        |    year(od.create_time) year,
        |    month(od.create_time) month
        |from (
        |     select
        |        id,
        |        province_id,
        |        final_total_amount,
        |        trade_body,
        |        create_time
        |     from dwd.act_order_info
        |) od
        |left join (
        |    select
        |        id,
        |        name,
        |        region_id
        |    from ods.dim_province
        |    where etl_date = (
        |        select max(etl_date)
        |        from ods.dim_province
        |    )
        |) province on od.province_id = province.id
        |left join (
        |    select
        |        id,
        |        region_name
        |    from dwd.dim_region
        |    where etl_date = (
        |       select max(etl_date)
        |       from ods.dim_province
        |    )
        |) region on province.region_id = region.id
        |""".stripMargin)

    // 查看結(jié)果
    result.show()

    // TODO 結(jié)果保存到指定的表中
    result.write
      .format("jdbc") // 使用jdbc格式寫入帶mysql
      .mode(SaveMode.Append) // 保存方式為追加
      .option("Driver", "com.mysql.jdbc.Driver")
      .option("url", "jdbc:mysql://shtd_result")
      .option("user", "root")
      .option("password", "000000")
      .option("dbtable", "provinceeverymonth")
      .save()
    // shtd_result.provinceeverymonth
    // TODO 關(guān)閉spark連接
    spark.close()
  }
}

結(jié)果查詢SQL

-- 訂單總數(shù)
select
    *
from dwd.shtd_result.provinceeverymonth
order by totalorder desc
limit 5;
-- 訂單總金額
select
    *
from dwd.shtd_result.provinceeverymonth
order by totalconsumption desc
limit 5;
-- 省份表主鍵
select
    *
from dwd.shtd_result.provinceeverymonth
order by provinceid desc
limit 5;

第二題

請(qǐng)根據(jù)dwd層表計(jì)算出2020年4月每個(gè)省份的平均訂單金額和所有省份平均訂單金額相比較結(jié)果(“高/低/相同”),存入MySQL數(shù)據(jù)庫(kù)shtd_result的provinceavgcmp表(表結(jié)構(gòu)如下)中,然后在Linux的MySQL命令行中根據(jù)省份表主鍵、該省平均訂單金額均為降序排序,查詢出前5條,將SQL語(yǔ)句復(fù)制粘貼至客戶端桌面【Release\任務(wù)B提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下,將執(zhí)行結(jié)果截圖粘貼至客戶端桌面【Release\任務(wù)B提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下

字段

類型

中文含義

備注

provinceid

int

省份表主鍵

provincename

text

省份名稱

provinceavgconsumption

double

該省平均訂單金額

allprovinceavgconsumption

double

所有省平均訂單金額

comparison

text

比較結(jié)果

該省平均訂單金額和所有省平均訂單金額比較結(jié)果,值為:高/低/相同

import org.apache.spark.SparkConf
import org.apache.spark.sql.{SaveMode, SparkSession}

object Compute02 {
  def main(args: Array[String]): Unit = {
    System.setProperty("HADOOP_USER_NAME", "atguigu")

    val conf = new SparkConf().setMaster("local[*]").setAppName("Compute02")
    val spark: SparkSession = SparkSession.builder().config(conf).enableHiveSupport().getOrCreate()

    spark.conf.set("hive.exec.dynamic.partition.mode", "nonstrict")
    spark.sparkContext.setLogLevel("OFF")

    val result = spark.sql(
      """
        |select
        |    provinceid,
        |    provincename,
        |    provinceavgconsumption,
        |    allprovinceavgconsumption,
        |    case
        |        when provinceavgconsumption > allprovinceavgconsumption then '高'
        |        when provinceavgconsumption < allprovinceavgconsumption then '低'
        |        else '相同'
        |    end comparison -- 比較結(jié)果
        |from
        |(
        |    select
        |        id provinceid,
        |        name provincename
        |    from dwd.dim_province
        |    where etl_date = (
        |        select max(etl_date) from ods.base_province
        |    )
        |) province
        |left join (
        |    select
        |        province_id,
        |        avg(final_total_amount) provinceavgconsumption -- 該省平均訂單金額
        |    from ods.order_info
        |    where create_time between '2020-04-01' and '2020-04-30'
        |    group by dwd.act_order_info
        |) od on od.province_id = province.provinceid
        |left join (
        |    select
        |        province_id,
        |        avg(final_total_amount) allprovinceavgconsumption -- 所有省平均訂單金額
        |    from dwd.act_order_info
        |    where create_time between '2020-06-01' and '2022-06-30'
        |) avgorder on avgorder.province_id = province.provinceid
        |""".stripMargin)

    result
      .write
      .format("jdbc")
      .mode(SaveMode.Append)
      .option("Driver", "com.mysql.jdbc.Driver")
      .option("url", "jdbc:mysql://shtd_result")
      .option("user", "root")
      .option("password", "000000")
      .option("dbtable", "provinceavgcmp")
      .save()

    spark.close()
  }
}

結(jié)果查詢SQL

-- 省份表主鍵
select *
from shtd_result.provinceavgcmp
order by provinceid desc
limit 5;
-- 該省平均訂單金額
select
    *
from shtd_result.provinceavgcmp
order by provinceavgconsumption desc
limit 5;

第三題

根據(jù)dwd層表統(tǒng)計(jì)在兩天內(nèi)連續(xù)下單并且下單金額保持增長(zhǎng)的用戶,存入MySQL數(shù)據(jù)庫(kù)shtd_result的usercontinueorder表(表結(jié)構(gòu)如下)中,然后在Linux的MySQL命令行中根據(jù)訂單總數(shù)、訂單總金額、客戶主鍵均為降序排序,查詢出前5條,將SQL語(yǔ)句復(fù)制粘貼至客戶端桌面【Release\任務(wù)B提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下,將執(zhí)行結(jié)果截圖粘貼至客戶端桌面【Release\任務(wù)B提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下

字段

類型

中文含義

備注

userid

int

客戶主鍵

username

text

客戶名稱

day

text

記錄下單日的時(shí)間,格式為

yyyyMMdd_yyyyMMdd

例如: 20220101_20220102

totalconsumption

double

訂單總金額

連續(xù)兩天的訂單總金額

totalorder

int

訂單總數(shù)

連續(xù)兩天的訂單總數(shù)

import org.apache.spark.SparkConf
import org.apache.spark.sql.{SaveMode, SparkSession}

object Compute03 {
  def main(args: Array[String]): Unit = {
    System.setProperty("HADOOP_USER_NAME", "atguigu")

    val conf = new SparkConf().setMaster("local[*]").setAppName("Compute03")
    val spark: SparkSession = SparkSession.builder().config(conf).enableHiveSupport().getOrCreate()

    spark.conf.set("hive.exec.dynamic.partition.mode", "nonstrict")
    spark.sparkContext.setLogLevel("OFF")

    val result = spark.sql(
      """
        | select
        |     userid,
        |     username,
        |     buy_date_first,
        |     buy_date_second,
        |     concat(buy_date_first, '_', buy_date_second) day,
        |     totalconsumption,
        |     totalorder
        | from (
        |     select
        |      od1.user_id userid,
        |      od2.consignee username,
        |      buy_date_first,
        |      buy_date_second,
        |      totalconsumption,
        |      od1.totalorder,
        |      datediff(buy_date_second, buy_date_first) part_date_num,
        |      if (buy_amount_second - total_amount > 0, 1, 0) part_amount_increase
        |     from (
        |         select
        |             user_id ,
        |             create_time buy_date_first, -- 獲取當(dāng)前時(shí)間的下一天
        |             count(id) totalorder,
        |             lead(create_time, 1, "9999-12-31 00:00:00") over (partition by user_id order by create_time) buy_date_second,
        |             lead(final_total_amount) over(partition by user_id order by create_time) buy_amount_second,
        |             sum(total_amount) over (partition by user_id) totalconsumption
        |         from dwd.act_order_info
        |         group by user_id, date_format(create_time, 'yyyyMMdd')
        |     ) od1
        |     left join (
        |     select
        |         user_id,
        |         consignee,
        |         final_total_amount
        |     from dwd.act_order_info
        |     ) od2 on od1.user_id = od2.user_id
        | )
        | where part_date_num = 1        -- 連續(xù)兩天的訂單
        | and part_amount_increase = 1   -- 訂單金額保持增長(zhǎng)
        |""".stripMargin)

    result
      .write
      .format("jdbc")
      .mode(SaveMode.Append)
      .option("Driver", "com.mysql.jdbc.Driver")
      .option("url", "jdbc:mysql://shtd_result")
      .option("user", "root")
      .option("password", "000000")
      .option("dbtable", "provinceavgcmp")
      .save()

    spark.close()
  }
}

結(jié)果查詢sql

-- 訂單總數(shù)
select
    *
from shtd_result.usercontinueorder
order by totalorder desc
limit 5;
-- 訂單總金額
select
    *
from shtd_result.usercontinueorder
order by totalconsumption
limit 5;
-- 客戶主鍵
select
    *
from shtd_result.usercontinueorder
order by userid desc
limit 5;

指標(biāo)計(jì)算部分的難點(diǎn)就是多表查詢的部分已經(jīng)開(kāi)窗函數(shù)的合理運(yùn)用,因此熟練掌握HiveSQL中高級(jí)函數(shù)的部分是非常重要的,不然此部分將會(huì)很難完成文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-791431.html

到了這里,關(guān)于全國(guó)職業(yè)院校技能大賽-大數(shù)據(jù) 離線數(shù)據(jù)處理模塊-指標(biāo)計(jì)算的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 2022全國(guó)職業(yè)院校技能大賽軟件測(cè)試賽項(xiàng)解析

    2022全國(guó)職業(yè)院校技能大賽軟件測(cè)試賽項(xiàng)解析

    隨著時(shí)間的流逝,2022的賽項(xiàng)規(guī)程和賽項(xiàng)賽題也在3月24號(hào)全部官網(wǎng)發(fā)布了,看了下其他的賽項(xiàng)賽項(xiàng)組委會(huì)今年改革真的狠要求每個(gè)賽項(xiàng)公布十套題,看著軟測(cè)賽項(xiàng)又有無(wú)力吐槽點(diǎn)都是看到第一眼都是懵的(公布的試題練習(xí)只有軟測(cè)每次都是這樣,自己去賽項(xiàng)規(guī)程和賽項(xiàng)試題去尋

    2023年04月09日
    瀏覽(40)
  • 2023年全國(guó)職業(yè)院校技能大賽-信息安全管理與評(píng)估-賽題 1

    2023年全國(guó)職業(yè)院校技能大賽-信息安全管理與評(píng)估-賽題 1

    目錄 信息安全管理與評(píng)估 賽題一 模塊一 網(wǎng)絡(luò)平臺(tái)搭建與設(shè)備安全防護(hù) 任務(wù)1:網(wǎng)絡(luò)平臺(tái)搭建 (50分) 任務(wù)2:網(wǎng)絡(luò)安全設(shè)備配置與防護(hù)(250分) 模塊二 網(wǎng)絡(luò)安全事件響應(yīng)、數(shù)字取證調(diào)查、應(yīng)用程序安全 競(jìng)賽項(xiàng)目賽題 介紹 所需的設(shè)備、機(jī)械、裝置和材料 評(píng)分方案 項(xiàng)目和任

    2024年02月06日
    瀏覽(27)
  • 2022 年全國(guó)職業(yè)院校技能大賽高職組云計(jì)算賽項(xiàng)試卷-容器云-1

    2022 年全國(guó)職業(yè)院校技能大賽高職組云計(jì)算賽項(xiàng)試卷 ........ 【任務(wù) 1 】容器云平臺(tái)搭建[5 分] 【適用平臺(tái)】私有云 【題目 1】平臺(tái)部署--部署容器云平臺(tái)[1.5 分] 登錄 OpenStack 私有云平臺(tái),使用 CentOS7.9 鏡像創(chuàng)建兩臺(tái)云主機(jī),使用 kubeeasy 工具完成 Kubernetes 1.22.1 集群的搭建。然后

    2024年02月12日
    瀏覽(26)
  • 2023年全國(guó)職業(yè)院校技能大賽網(wǎng)絡(luò)建設(shè)與運(yùn)維樣題理論題答案

    2023年全國(guó)職業(yè)院校技能大賽網(wǎng)絡(luò)建設(shè)與運(yùn)維樣題理論題答案

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 禁止侵權(quán),禁止轉(zhuǎn)載? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 1.貴公司正在評(píng)估數(shù)據(jù)中心虛擬化技術(shù),要求您解釋第1類和第2類虛擬化管理程序之間的區(qū)別。以下哪項(xiàng)是第1類虛擬

    2024年02月07日
    瀏覽(26)
  • 2023年全國(guó)職業(yè)院校技能大賽信息安全管理與評(píng)估網(wǎng)絡(luò)安全滲透任務(wù)書

    2023年全國(guó)職業(yè)院校技能大賽信息安全管理與評(píng)估網(wǎng)絡(luò)安全滲透任務(wù)書

    全國(guó)職業(yè)院校技能大賽 高等職業(yè)教育組 信息安全管理與評(píng)估 任務(wù)書 模塊三 網(wǎng)絡(luò)安全滲透、理論技能與職業(yè)素養(yǎng) 比賽時(shí)間及注意事項(xiàng) 本階段比賽時(shí)長(zhǎng)為180分鐘,時(shí)間為 9:00-12:00。 【注意事項(xiàng)】 (1)通過(guò)找到正確的flag值來(lái)獲取得分,flag統(tǒng)一格式如下所示: flag{flag值 } 這種

    2024年02月10日
    瀏覽(25)
  • 教育部辦公廳關(guān)于印發(fā)《全國(guó)職業(yè)院校技能大賽執(zhí)行規(guī)劃(2023—2027年)》的通知

    全國(guó)職業(yè)院校技能大賽執(zhí)行規(guī)劃 (2023—2027年) 完善選手獎(jiǎng)勵(lì)政策。探索建立和完善分層分級(jí)的大賽獲獎(jiǎng)師生獎(jiǎng)勵(lì)制度。鼓勵(lì)各地協(xié)調(diào)聯(lián)合主辦單位,借鑒相關(guān)做法,在授予技術(shù)能手、青年崗位能手稱號(hào)和職業(yè)技能等級(jí)評(píng)定等方面出臺(tái)相關(guān)辦法和舉措;完善大賽獲獎(jiǎng)選手在升

    2024年02月01日
    瀏覽(20)
  • 2023年全國(guó)職業(yè)院校技能大賽-高職組-物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)-任務(wù)書(第6套卷)

    2023年全國(guó)職業(yè)院校技能大賽-高職組-物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)-任務(wù)書(第6套卷)

    目錄 第一部分 競(jìng)賽須知 一、競(jìng)賽要求 二、職業(yè)素養(yǎng)與安全意識(shí) 三、扣分項(xiàng) 四、選手須知 第二部分 競(jìng)賽設(shè)備及注意事項(xiàng) 一、注意事項(xiàng) 二、硬件環(huán)境 第三部分競(jìng)賽任務(wù) 模塊一 物聯(lián)網(wǎng)方案設(shè)計(jì)與升級(jí)改造(40分) 子任務(wù)1-1 感知層設(shè)備安裝與調(diào)試 1、設(shè)備選型、布局與安裝連

    2024年02月08日
    瀏覽(25)
  • 2023年全國(guó)職業(yè)院校技能大賽-高職組-物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)-任務(wù)書(第1套卷)

    2023年全國(guó)職業(yè)院校技能大賽-高職組-物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)-任務(wù)書(第1套卷)

    目錄 第一部分?競(jìng)賽須知 一、競(jìng)賽要求 二、職業(yè)素養(yǎng)與安全意識(shí) 三、扣分項(xiàng) 四、選手須知 第二部分?競(jìng)賽設(shè)備及注意事項(xiàng) 一、注意事項(xiàng) 二、硬件環(huán)境 第三部分競(jìng)賽任務(wù) 模塊一 物聯(lián)網(wǎng)方案設(shè)計(jì)與升級(jí)改造(40分) 模塊二 物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)與調(diào)試(60分) 1、正確使用工具,

    2024年02月08日
    瀏覽(19)
  • 全國(guó)職業(yè)院校技能大賽-嵌入式系統(tǒng)應(yīng)用開(kāi)發(fā)賽項(xiàng)-競(jìng)賽任務(wù)書(第9套)

    全國(guó)職業(yè)院校技能大賽-嵌入式系統(tǒng)應(yīng)用開(kāi)發(fā)賽項(xiàng)-競(jìng)賽任務(wù)書(第9套)

    目錄 全國(guó)職業(yè)院校技能大賽嵌入式系統(tǒng)應(yīng)用開(kāi)發(fā)賽項(xiàng) 競(jìng)賽模塊:?模塊一 競(jìng)賽注意事項(xiàng) 第一模塊 嵌入式系統(tǒng)硬件制作與驅(qū)動(dòng)開(kāi)發(fā) 競(jìng)賽任務(wù)書(第9套) 一、總體要求 二、競(jìng)賽任務(wù)表 競(jìng)賽模塊:?模塊二 競(jìng)賽注意事項(xiàng) 第二模塊 嵌入式系統(tǒng)應(yīng)用程序開(kāi)發(fā) 競(jìng)賽任務(wù)書(第9套)

    2024年02月07日
    瀏覽(23)
  • 全國(guó)職業(yè)院校技能大賽-嵌入式系統(tǒng)應(yīng)用開(kāi)發(fā)賽項(xiàng)-競(jìng)賽任務(wù)書(第5套)

    全國(guó)職業(yè)院校技能大賽-嵌入式系統(tǒng)應(yīng)用開(kāi)發(fā)賽項(xiàng)-競(jìng)賽任務(wù)書(第5套)

    目錄 全國(guó)職業(yè)院校技能大賽嵌入式系統(tǒng)應(yīng)用開(kāi)發(fā)賽項(xiàng) 競(jìng)賽模塊:?模塊一 競(jìng)賽注意事項(xiàng) 第一模塊 嵌入式系統(tǒng)硬件制作與驅(qū)動(dòng)開(kāi)發(fā) 競(jìng)賽任務(wù)書(第5套) 一、總體要求 二、競(jìng)賽任務(wù)表 競(jìng)賽模塊:?模塊二 競(jìng)賽注意事項(xiàng) 第二模塊 嵌入式系統(tǒng)應(yīng)用程序開(kāi)發(fā) 競(jìng)賽任務(wù)書(第5套)

    2024年02月04日
    瀏覽(30)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包