大数据之指标计算(5) -- 使用Spark根据dws层的dws.machine_produce_per_avgtime表,获取各设备生产耗时最长的两个产品的用时。将结果存入clickhouse数据库
这是一个关于使用Scala和Spark获取各设备生产耗时最长的两个产品的用时,并将结果存储在clickhouse数据库中,然后在Linux命令行工具中查询前两条设备id倒序排列的数据的问题。在dws层的machine_produce_per_avgtime表中,获取各个设备生产耗时最长的两个产品的用时,得到设备id(machine_id)、最长耗时(first_time)和次长耗时(second_
目录
前言
本题来源于全国职业技能大赛之大数据技术赛项工业数据处理赛题 - 离线数据处理 - 指标计算
注:由于个人设备问题,代码执行结果以及最后数据显示结果将不会给出。
题目:
提示:以下是本篇文章正文内容,下面案例可供参考(使用Scala语言编写)
一、读题分析
涉及组件:Scala,spark,hive,clickhouse
涉及知识点:
- 数据处理与计算
- clickhouse数据库的使用
二、处理过程
import org.apache.spark.sql.SparkSession
import java.util.Properties
object answer_No5 {
def main(args: Array[String]): Unit = {
val spark = SparkSession.builder().appName("MachineAvgProduceTime").master("local[*]").enableHiveSupport()
.getOrCreate()
val df = spark.sql(
"""
|select *
|from (
| select
| produce_machine_id,
| producetime,
| rank() over (partition by produce_machine_id order by producetime desc ) as rank
| from dws.machine_produce_per_avgtime
| ) t
|where rank <= 2
|""".stripMargin)
// df.show()
sendToClickHouse(df,"shtd_industry.machine_produce_timetop2","","root","")
}
}
-- 代码仅供参考 --
关于sendToClickHouse函数怎么写,设备问题,在这里就不做展示了,可以参考我写的另外一篇文章
大数据之指标计算(2) -- 使用Spark根据dwd层fact_change_record表关联dim_machine表统计每个车间中所有设备运行时长...将计算结果存入clickhouse数据库
三、重难点分析
没什么难点,主要是获取各设备生产耗时最长的两个产品的用时,先排序然后取前2
本期为指标计算第5篇,后续应该还会出3篇。
总结
这是一个关于使用Scala和Spark获取各设备生产耗时最长的两个产品的用时,并将结果存储在clickhouse数据库中,然后在Linux命令行工具中查询前两条设备id倒序排列的数据的问题。下面是具体的要求和表结构:
- 在dws层的machine_produce_per_avgtime表中,获取各个设备生产耗时最长的两个产品的用时,得到设备id(machine_id)、最长耗时(first_time)和次长耗时(second_time)字段。
- 将计算结果存入clickhouse数据库shtd_industry的表machine_produce_timetop2中,表结构包含machine_id、first_time和second_time字段。
- 通过Linux的clickhouse命令行工具查询出前2条设备id倒序排列的数据,将SQL语句和执行结果截图粘贴到报告中。
注意:这个题目需要掌握Spark编程、clickhouse数据库以及Linux命令行工具的使用。
本篇是作者的大数据之指标计算系列之一:
请关注我的大数据技术专栏大数据技术 作者: Eternity.Arrebol
请关注我获取更多与大数据相关的文章Eternity.Arrebol的博客
更多推荐
所有评论(0)