(全國(guó)職業(yè)技能比賽:高職)GZ033大數(shù)據(jù)應(yīng)用開(kāi)發(fā)賽題第10套.docx

(全國(guó)職業(yè)技能比賽:高職)GZ033大數(shù)據(jù)應(yīng)用開(kāi)發(fā)賽題第10套.docx

ID:83631285

大小:34.13 KB

頁(yè)數(shù):21頁(yè)

時(shí)間:2024-09-03

上傳者:gjxwyhcr
(全國(guó)職業(yè)技能比賽:高職)GZ033大數(shù)據(jù)應(yīng)用開(kāi)發(fā)賽題第10套.docx_第1頁(yè)
(全國(guó)職業(yè)技能比賽:高職)GZ033大數(shù)據(jù)應(yīng)用開(kāi)發(fā)賽題第10套.docx_第2頁(yè)
(全國(guó)職業(yè)技能比賽:高職)GZ033大數(shù)據(jù)應(yīng)用開(kāi)發(fā)賽題第10套.docx_第3頁(yè)
(全國(guó)職業(yè)技能比賽:高職)GZ033大數(shù)據(jù)應(yīng)用開(kāi)發(fā)賽題第10套.docx_第4頁(yè)
(全國(guó)職業(yè)技能比賽:高職)GZ033大數(shù)據(jù)應(yīng)用開(kāi)發(fā)賽題第10套.docx_第5頁(yè)
(全國(guó)職業(yè)技能比賽:高職)GZ033大數(shù)據(jù)應(yīng)用開(kāi)發(fā)賽題第10套.docx_第6頁(yè)
(全國(guó)職業(yè)技能比賽:高職)GZ033大數(shù)據(jù)應(yīng)用開(kāi)發(fā)賽題第10套.docx_第7頁(yè)
(全國(guó)職業(yè)技能比賽:高職)GZ033大數(shù)據(jù)應(yīng)用開(kāi)發(fā)賽題第10套.docx_第8頁(yè)
(全國(guó)職業(yè)技能比賽:高職)GZ033大數(shù)據(jù)應(yīng)用開(kāi)發(fā)賽題第10套.docx_第9頁(yè)
(全國(guó)職業(yè)技能比賽:高職)GZ033大數(shù)據(jù)應(yīng)用開(kāi)發(fā)賽題第10套.docx_第10頁(yè)
資源描述:

《(全國(guó)職業(yè)技能比賽:高職)GZ033大數(shù)據(jù)應(yīng)用開(kāi)發(fā)賽題第10套.docx》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

2023年全國(guó)職業(yè)院校技能大賽賽題第10套賽項(xiàng)名稱:大數(shù)據(jù)應(yīng)用開(kāi)發(fā)英文名稱:BigDataApplicationDevelopment賽項(xiàng)組別:高等職業(yè)教育組賽項(xiàng)編號(hào):GZ033 背景描述工業(yè)互聯(lián)網(wǎng)是工業(yè)全要素、全產(chǎn)業(yè)鏈、全價(jià)值鏈的全面連接,是人、機(jī)、物、工廠互聯(lián)互通的新型工業(yè)生產(chǎn)制造服務(wù)體系,是互聯(lián)網(wǎng)從消費(fèi)領(lǐng)域向生產(chǎn)領(lǐng)域、從虛擬經(jīng)濟(jì)向?qū)嶓w經(jīng)濟(jì)拓展的核心載體,是建設(shè)現(xiàn)代化經(jīng)濟(jì)體系、實(shí)現(xiàn)高質(zhì)量發(fā)展和塑造全球產(chǎn)業(yè)競(jìng)爭(zhēng)力的關(guān)鍵支撐,工業(yè)大數(shù)據(jù)則是工業(yè)互聯(lián)網(wǎng)實(shí)現(xiàn)工業(yè)要素互聯(lián)之后的核心價(jià)值創(chuàng)造者?隨著大數(shù)據(jù)行業(yè)的發(fā)展,工業(yè)數(shù)據(jù)收集呈現(xiàn)時(shí)間維度不斷延長(zhǎng)、數(shù)據(jù)范圍不斷擴(kuò)大、數(shù)據(jù)粒度不斷細(xì)化的趨勢(shì)?以上三個(gè)維度的變化使得企業(yè)所積累的數(shù)據(jù)量以加速度的方式在增加,最終構(gòu)成了工業(yè)大數(shù)據(jù)的集合?為完成工業(yè)大數(shù)據(jù)分析工作,你所在的小組將應(yīng)用大數(shù)據(jù)技術(shù),以Scala作為整個(gè)項(xiàng)目的基礎(chǔ)開(kāi)發(fā)語(yǔ)言,基于大數(shù)據(jù)平臺(tái)綜合利用Hudi、Spark、Flink、Vue.js等技術(shù),對(duì)數(shù)據(jù)進(jìn)行處理、分析及可視化呈現(xiàn),你們作為該小組的技術(shù)人員,請(qǐng)按照下面任務(wù)完成本次工作。 任務(wù)A:大數(shù)據(jù)平臺(tái)搭建(容器環(huán)境)(15分)環(huán)境說(shuō)明:服務(wù)端登錄地址詳見(jiàn)各任務(wù)服務(wù)端說(shuō)明。補(bǔ)充說(shuō)明:宿主機(jī)及各容器節(jié)點(diǎn)可通過(guò)Asbru工具或SSH客戶端進(jìn)行SSH訪問(wèn)。子任務(wù)一:HadoopHA安裝配置本任務(wù)需要使用root用戶完成相關(guān)配置,安裝Hadoop需要配置前置環(huán)境。命令中要求使用絕對(duì)路徑,具體要求如下:1、從宿主機(jī)/opt目錄下將文件hadoop-3.1.3.tar.gz、jdk-8u212-linux-x64.tar.gz,apache-zookeeper-3.5.7-bin.tar.gz復(fù)制到容器Master中的/opt/software路徑中(若路徑不存在,則需新建),分別將Master節(jié)點(diǎn)Hadoop、ZooKeeper、JDK安裝包解壓到/opt/module路徑中(若路徑不存在,則需新建),其中將JDK、Hadoop解壓命令復(fù)制并粘貼至客戶端桌面【Release任務(wù)A提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;2、請(qǐng)完成host相關(guān)配置,將三個(gè)節(jié)點(diǎn)分別命名為master、slave1、slave2并做免密登錄,修改容器中/etc/profile文件,設(shè)置JDK環(huán)境變量并使其生效,分發(fā)jdk至slave1、slave2中,均配置完畢后在Master節(jié)點(diǎn)分別執(zhí)行“java-version”和“javac”命令,將命令行執(zhí)行結(jié)果分別截圖并粘貼至客戶端桌面【Release任務(wù)A提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;3、配置好zookeeper,其中zookeeper使用集群模式,分別在master、slave1、slave2作為其集群的節(jié)點(diǎn),使用zkServer.shstatus獲取zookeeper服務(wù)端狀態(tài),將命令和結(jié)果截圖粘貼至客戶端桌面【Release任務(wù)A提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下(注:只截取三個(gè)節(jié)點(diǎn)中zookeeperserver角色模式為leader的節(jié)點(diǎn)); 1、配置好HadoopHA,請(qǐng)將dfs.ha.namenodes.hadoopcluster設(shè)置為nn1、nn2,同時(shí)yarn.resourcemanager.ha.rm-ids設(shè)置為rm1、rm2,并在Master啟動(dòng)nn1與rm1,在slave1啟動(dòng)nn2與rm2,將master、slave1、slave2均作為datanode,分發(fā)hadoop至slave1、slave2中,啟動(dòng)yarn與hdfs的HA集群(HadoopHA集群),并在Master節(jié)點(diǎn)上使用命令分別查看服務(wù)nn2與rm2進(jìn)程狀態(tài),并將查看命令及結(jié)果截圖粘貼至客戶端桌面【Release任務(wù)A提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;2、HadoopHA配置并啟動(dòng)完畢后,使用jps在slave1節(jié)點(diǎn)查看服務(wù)進(jìn)程,將查看命令及結(jié)果截圖粘貼至客戶端桌面【Release任務(wù)A提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。子任務(wù)二:Flume安裝配置本任務(wù)需要使用root用戶完成相關(guān)配置,已安裝Hadoop及需要配置前置環(huán)境,具體要求如下:1、從宿主機(jī)/opt目錄下將文件apache-flume-1.7.0-bin.tar.gz復(fù)制到容器master中的/opt/software路徑中(若路徑不存在,則需新建),將Master節(jié)點(diǎn)Flume安裝包解壓到/opt/module目錄下,將解壓命令復(fù)制并粘貼至客戶端桌面【Release任務(wù)A提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;2、完善相關(guān)配置,配置Flume環(huán)境變量,并使環(huán)境變量生效,執(zhí)行命令flume-ngversion并將命令與結(jié)果截圖粘貼至客戶端桌面【Release任務(wù)A提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;3、啟動(dòng)Flume傳輸Hadoop日志(namenode或datanode日志),查看HDFS中/tmp/flume目錄下生成的內(nèi)容,將查看命令及結(jié)果(至少5條結(jié)果)截圖并粘貼至客戶端桌面【Release任務(wù)A提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。子任務(wù)三:ClickHouse單節(jié)點(diǎn)安裝配置本任務(wù)需要使用root用戶完成相關(guān)配置,具體要求如下:1、 從宿主機(jī)/opt目錄下將clickhouse開(kāi)頭的相關(guān)文件復(fù)制到容器Master中的/opt/module/clickhouse路徑中(若路徑不存在,則需新建),將全部解壓命令復(fù)制并粘貼至客戶端桌面【Release任務(wù)A提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;1、執(zhí)行啟動(dòng)各個(gè)相關(guān)腳本,將全部啟動(dòng)命令復(fù)制并將執(zhí)行結(jié)果(截取結(jié)果最后倒數(shù)15行即可)截圖粘貼至客戶端桌面【Release任務(wù)A提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;2、設(shè)置遠(yuǎn)程訪問(wèn)并移除默認(rèn)監(jiān)聽(tīng)文件(listen.xml),同時(shí)由于9000端口被Hadoop占用,需要將clickhouse的端口更改為9001,并啟動(dòng)clickhouse,啟動(dòng)后查看clickhouse運(yùn)行狀態(tài),并將啟動(dòng)命令復(fù)制、查看運(yùn)行狀態(tài)命令復(fù)制并將執(zhí)行結(jié)果截圖粘貼至客戶端桌面【Release任務(wù)A提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。 任務(wù)B:離線數(shù)據(jù)處理(25分)環(huán)境說(shuō)明:服務(wù)端登錄地址詳見(jiàn)各任務(wù)服務(wù)端說(shuō)明。補(bǔ)充說(shuō)明:各節(jié)點(diǎn)可通過(guò)Asbru工具或SSH客戶端進(jìn)行SSH訪問(wèn);主節(jié)點(diǎn)MySQL數(shù)據(jù)庫(kù)用戶名/密碼:root/123456(已配置遠(yuǎn)程連接);Spark任務(wù)在Yarn上用Client運(yùn)行,方便觀察日志。子任務(wù)一:數(shù)據(jù)抽取編寫(xiě)Scala代碼,使用Spark將MySQL庫(kù)中表EnvironmentData,ChangeRecord,BaseMachine,MachineData,ProduceRecord全量抽取到Hudi的hudi_gy_ods庫(kù)(路徑為/user/hive/warehouse/hudi_gy_ods.db)中對(duì)應(yīng)表environmentdata,changerecord,basemachine,machinedata,producerecord中。1、抽取MySQL的shtd_industry庫(kù)中EnvironmentData表的全量數(shù)據(jù)進(jìn)入Hudi的hudi_gy_ods庫(kù)中表environmentdata,字段排序、類型不變,同時(shí)添加靜態(tài)分區(qū),分區(qū)字段為etldate,類型為String,且值為當(dāng)前比賽日的前一天日期(分區(qū)字段格式為yyyyMMdd)。PRECOMBINE_FIELD使用InPutTime,EnvoId作為主鍵。使用spark-sql的cli執(zhí)行showpartitionsods.environmentdata命令,將結(jié)果截圖粘貼至客戶端桌面【Release任務(wù)B提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;2、抽取MySQL的shtd_industry庫(kù)中ChangeRecord表的全量數(shù)據(jù)進(jìn)入Hudi的hudi_gy_ods庫(kù)中表changerecord,字段排序、類型不變,分區(qū)字段為etldate,類型為String,且值為當(dāng)前比賽日的前一天日期(分區(qū)字段格式為yyyyMMdd)。PRECOMBINE_FIELD使用ChangeEndTime,ChangeID和ChangeMachineID作為聯(lián)合主鍵。使用spark-sql的cli執(zhí)行select count(*)fromods.changerecord命令,將cli的執(zhí)行結(jié)果分別截圖粘貼至客戶端桌面【Release任務(wù)B提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;1、抽取MySQL的shtd_industry庫(kù)中BaseMachine表的全量數(shù)據(jù)進(jìn)入Hudi的hudi_gy_ods庫(kù)中表basemachine,字段排序、類型不變,分區(qū)字段為etldate,類型為String,且值為當(dāng)前比賽日的前一天日期(分區(qū)字段格式為yyyyMMdd)。PRECOMBINE_FIELD使用MachineAddDate,BaseMachineID為主鍵。使用spark-sql的cli執(zhí)行showpartitionsods.basemachine命令,將spark-sql的cli的執(zhí)行結(jié)果分別截圖粘貼至客戶端桌面【Release任務(wù)B提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;2、抽取MySQL的shtd_industry庫(kù)中ProduceRecord表的全量數(shù)據(jù)進(jìn)入Hudi的hudi_gy_ods庫(kù)中表producerecord,剔除ProducePrgCode字段,其余字段排序、類型不變,分區(qū)字段為etldate,類型為String,且值為當(dāng)前比賽日的前一天日期(分區(qū)字段格式為yyyyMMdd)。PRECOMBINE_FIELD使用ProduceCodeEndTime,ProduceRecordID和ProduceMachineID為聯(lián)合主鍵。使用spark-sql的cli執(zhí)行showpartitionsods.producerecord命令,將spark-sql的cli的執(zhí)行結(jié)果分別截圖粘貼至客戶端桌面【Release任務(wù)B提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;3、抽取MySQL的shtd_industry庫(kù)中MachineData表的全量數(shù)據(jù)進(jìn)入Hudi的hudi_gy_ods庫(kù)中表machinedata,字段排序、類型不變,分區(qū)字段為etldate,類型為String,且值為當(dāng)前比賽日的前一天日期(分區(qū)字段格式為yyyyMMdd)。PRECOMBINE_FIELD使用MachineRecordDate,MachineRecordID為主鍵。使用spark-sql的cli執(zhí)行showpartitionsods.machinedata命令,將cli的執(zhí)行結(jié)果分別截圖粘貼至客戶端桌面【Release任務(wù)B提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。子任務(wù)二:數(shù)據(jù)清洗編寫(xiě)Scala代碼,使用Spark將ods庫(kù)中相應(yīng)表數(shù)據(jù)全量抽取到Hudi的hudi_gy_dwd庫(kù)(路徑為/user/hive/warehouse/hudi_gy_dwd.db)中對(duì)應(yīng)表中。表中有涉及到timestamp類型的,均要求按照yyyy-MM-dd HH:mm:ss,不記錄毫秒數(shù),若原數(shù)據(jù)中只有年月日,則在時(shí)分秒的位置添加00:00:00,添加之后使其符合yyyy-MM-ddHH:mm:ss。1、抽取hudi_gy_ods庫(kù)中environmentdata的全量數(shù)據(jù)進(jìn)入Hudi的hudi_gy_dwd庫(kù)中表fact_environment_data,分區(qū)字段為etldate且值與ods庫(kù)的相對(duì)應(yīng)表該值相等,并添加dwd_insert_user、dwd_insert_time、dwd_modify_user、dwd_modify_time四列,其中dwd_insert_user、dwd_modify_user均填寫(xiě)“user1”,dwd_insert_time、dwd_modify_time均填寫(xiě)當(dāng)前操作時(shí)間,并進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換。dwd_modify_time作為preCombineField,EnvoId作為primaryKey。使用spark-sql的cli按照envoid降序排序,查詢前5條數(shù)據(jù),將結(jié)果截圖粘貼至客戶端桌面【Release任務(wù)B提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;2、抽取hudi_gy_ods庫(kù)中changerecord的全量數(shù)據(jù)進(jìn)入Hudi的hudi_gy_dwd庫(kù)中表fact_change_record,分區(qū)字段為etldate且值與hudi_gy_ods庫(kù)的相對(duì)應(yīng)表該值相等,并添加dwd_insert_user、dwd_insert_time、dwd_modify_user、dwd_modify_time四列,其中dwd_insert_user、dwd_modify_user均填寫(xiě)“user1”,dwd_insert_time、dwd_modify_time均填寫(xiě)當(dāng)前操作時(shí)間,并進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換。dwd_modify_time作為preCombineField,change_id和change_machine_id作為聯(lián)合primaryKey。使用spark-sql的cli按照change_machine_id、change_id均為降序排序,查詢前1條數(shù)據(jù),將結(jié)果截圖粘貼至客戶端桌面【Release任務(wù)B提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;3、抽取hudi_gy_ods庫(kù)中basemachine的全量數(shù)據(jù)進(jìn)入Hudi的hudi_gy_dwd庫(kù)中表dim_machine。分區(qū)字段為etldate且值與hudi_gy_ods庫(kù)的相對(duì)應(yīng)表該值相等,并添加dwd_insert_user、dwd_insert_time、dwd_modify_user、dwd_modify_time四列,其中dwd_insert_user、dwd_modify_user均填寫(xiě)“user1”,dwd_insert_time、dwd_modify_time均填寫(xiě)當(dāng)前操作時(shí)間,并進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換。dwd_modify_time作為preCombineField,Base_machine_id作為primaryKey。使用spark-sql的cli按照Base_machine_id升序排序,查詢dim_machine前2條數(shù)據(jù),將結(jié)果 截圖粘貼至客戶端桌面【Release任務(wù)B提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;1、抽取hudi_gy_ods庫(kù)中producerecord的全量數(shù)據(jù)進(jìn)入Hudi的hudi_gy_dwd庫(kù)中表fact_produce_record,分區(qū)字段為etldate且值與hudi_gy_ods庫(kù)的相對(duì)應(yīng)表該值相等,并添加dwd_insert_user、dwd_insert_time、dwd_modify_user、dwd_modify_time四列,其中dwd_insert_user、dwd_modify_user均填寫(xiě)“user1”,dwd_insert_time、dwd_modify_time均填寫(xiě)當(dāng)前操作時(shí)間,并進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換。dwd_modify_time作為preCombineField,produce_record_id和produce_machine_id作為聯(lián)合primaryKey。使用spark-sql的cli按照produce_machine_id、produce_record_id均為升序排序,查詢fact_produce_record前1條數(shù)據(jù),將結(jié)果截圖粘貼至客戶端桌面【Release任務(wù)B提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;2、抽取hudi_gy_ods庫(kù)中machinedata的全量數(shù)據(jù)進(jìn)入Hudi的hudi_gy_dwd庫(kù)中表fact_machine_data。分區(qū)字段為etldate且值與hudi_gy_ods庫(kù)的相對(duì)應(yīng)表該值相等,并添加dwd_insert_user、dwd_insert_time、dwd_modify_user、dwd_modify_time四列,其中dwd_insert_user、dwd_modify_user均填寫(xiě)“user1”,dwd_insert_time、dwd_modify_time均填寫(xiě)當(dāng)前操作時(shí)間,并進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換。dwd_modify_time作為preCombineField,machine_record_id作為primaryKey。使用spark-sql的cli按照machine_id、machine_record_id均為降序排序,查詢前1條數(shù)據(jù),將結(jié)果截圖粘貼至客戶端桌面【Release任務(wù)B提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。子任務(wù)三:指標(biāo)計(jì)算1、本任務(wù)基于以下2、3、4小題完成,使用DolphinScheduler完成第2、3、4題任務(wù)代碼的調(diào)度。工作流要求,使用shell輸出“開(kāi)始”作為工作流的第一個(gè)job(job1),2、3、4題任務(wù)為串行任務(wù)且它們依賴job1的完成(命名為job2、job3、job4 ),job2、job3、job4完成之后使用shell輸出“結(jié)束”作為工作流的最后一個(gè)job(endjob),endjob依賴job2、job3、job4,并將最終任務(wù)調(diào)度完成后的工作流截圖,將截圖粘貼至客戶端桌面【Release任務(wù)B提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;1、編寫(xiě)scala代碼,使用Spark根據(jù)hudi_gy_dwd層的fact_machine_data表統(tǒng)計(jì)出每日每臺(tái)設(shè)備,狀態(tài)為“運(yùn)行”的時(shí)長(zhǎng)(若運(yùn)行無(wú)結(jié)束時(shí)間,則需根據(jù)時(shí)間判斷這個(gè)設(shè)備的運(yùn)行狀態(tài)的下一個(gè)狀態(tài)是哪條數(shù)據(jù),將下一個(gè)狀態(tài)的數(shù)據(jù)的時(shí)間置為這個(gè)設(shè)備運(yùn)行狀態(tài)的結(jié)束時(shí)間,如果設(shè)備數(shù)據(jù)的運(yùn)行狀態(tài)不存在下一個(gè)狀態(tài),則該設(shè)備這個(gè)階段數(shù)據(jù)的運(yùn)行狀態(tài)不參與計(jì)算,即該設(shè)備的這個(gè)階段數(shù)據(jù)的運(yùn)行狀態(tài)時(shí)長(zhǎng)按0計(jì)算),將結(jié)果數(shù)據(jù)寫(xiě)入hudi_gy_dws層的表machine_data_total_time中,分區(qū)字段為etldate且值與fact_machine_data表該值相等,etldate作為preCombineField,machine_id、machine_record_date和total_time作為聯(lián)合primaryKey。然后使用spark-sql的cli根據(jù)machine_id降序和machine_record_date升序排序查詢前5條數(shù)據(jù),將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)下;dws.machine_data_total_time:字段類型中文含義備注machine_idint設(shè)備idmachine_record_datestring狀態(tài)日期如:2021-10-01total_timeint一天運(yùn)行總時(shí)長(zhǎng)秒2、 編寫(xiě)scala代碼,使用Spark根據(jù)hudi_gy_dws層表machine_data_total_time,計(jì)算每日運(yùn)行時(shí)長(zhǎng)前三的設(shè)備(若存在運(yùn)行時(shí)長(zhǎng)相同的數(shù)據(jù)時(shí)應(yīng)全部輸出,例如有兩條并列第二,則第三名次不變,總共輸出四條數(shù)據(jù))。將計(jì)算結(jié)果寫(xiě)入ClickHouse數(shù)據(jù)庫(kù)shtd_industry的machine_data_total_time_top3表中(表結(jié)構(gòu)如下),然后在Linux的ClickHouse命令行中根據(jù)查詢所有數(shù)據(jù),將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)下;machine_data_total_time_top3:字段類型中文含義備注date_dayvarchar日期如:2021-10-01first_idint第一一天運(yùn)行總時(shí)長(zhǎng)第一second_idint第二一天運(yùn)行總時(shí)長(zhǎng)第二tertiary_idint第三一天運(yùn)行總時(shí)長(zhǎng)第二first_timeint第一的時(shí)長(zhǎng)秒second_timeint第二的時(shí)長(zhǎng)秒tertiary_timeint第三的時(shí)長(zhǎng)秒1、編寫(xiě)scala代碼,使用Spark根據(jù)hudi_gy_dwd層的fact_produce_record表,基于全量歷史數(shù)據(jù)計(jì)算各設(shè)備生產(chǎn)一個(gè)產(chǎn)品的平均耗時(shí),produce_code_end_time值為1900-01-0100:00:00的數(shù)據(jù)為臟數(shù)據(jù),需要剔除(注:fact_produce_record表中,一條數(shù)據(jù)代表加工一個(gè)產(chǎn)品,produce_code_start_time字段為開(kāi)始加工時(shí)間,produce_code_end_time字段為完成加工時(shí)間),將設(shè)備每個(gè)產(chǎn)品的耗時(shí)與該設(shè)備平均耗時(shí)作比較,保留耗時(shí)高于平均值的產(chǎn)品數(shù)據(jù),將得到的數(shù)據(jù)寫(xiě)入ClickHouse數(shù)據(jù)庫(kù)shtd_industry的machine_produce_per_avgtime表中(表結(jié)構(gòu)如下),然后在Linux的ClickHouse命令行中根據(jù)設(shè)備id降序排序查詢前3條數(shù)據(jù),將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)下;machine_produce_per_avgtime:字段類型中文含義備注produce_record_idint生產(chǎn)記錄id 每生產(chǎn)一件產(chǎn)品產(chǎn)生一條數(shù)據(jù)produce_machine_idint設(shè)備idproducetimeint該產(chǎn)品耗時(shí)produce_per_avgtimeint設(shè)備生產(chǎn)一個(gè)產(chǎn)品平均耗時(shí)單位:秒 任務(wù)C:數(shù)據(jù)挖掘(10分)環(huán)境說(shuō)明:服務(wù)端登錄地址詳見(jiàn)各任務(wù)服務(wù)端說(shuō)明。補(bǔ)充說(shuō)明:各節(jié)點(diǎn)可通過(guò)Asbru工具或SSH客戶端進(jìn)行SSH訪問(wèn);主節(jié)點(diǎn)MySQL數(shù)據(jù)庫(kù)用戶名/密碼:root/123456(已配置遠(yuǎn)程連接);Spark任務(wù)在Yarn上用Client運(yùn)行,方便觀察日志。該任務(wù)均使用Scala編寫(xiě),利用Spark相關(guān)庫(kù)完成。子任務(wù)一:特征工程1、根據(jù)hudi_gy_dwd庫(kù)中fact_machine_data表(或MySQL的shtd_industry庫(kù)中MachineData表),根據(jù)以下要求轉(zhuǎn)換:獲取最大分區(qū)(MySQL不用考慮)的數(shù)據(jù)后,首先解析列machine_record_data(MySQL中為MachineRecordData)的數(shù)據(jù)(數(shù)據(jù)格式為xml,采用dom4j解析,解析demo在客戶端/home/ubuntu/Documents目錄下),并獲取每條數(shù)據(jù)的主軸轉(zhuǎn)速,主軸倍率,主軸負(fù)載,進(jìn)給倍率,進(jìn)給速度,PMC程序號(hào),循環(huán)時(shí)間,運(yùn)行時(shí)間,有效軸數(shù),總加工個(gè)數(shù),已使用內(nèi)存,未使用內(nèi)存,可用程序量,注冊(cè)程序量等相關(guān)的值(若該條數(shù)據(jù)沒(méi)有相關(guān)值,則按下表設(shè)置默認(rèn)值),同時(shí)轉(zhuǎn)換machine_record_state字段的值,若值為報(bào)警,則填寫(xiě)1,否則填寫(xiě)0,以下為表結(jié)構(gòu),將數(shù)據(jù)保存在Hive的dwd.fact_machine_learning_data,使用cli按照machine_record_id升序排序,查詢dwd.fact_machine_learning_data前1條數(shù)據(jù),將結(jié)果截圖粘貼至客戶端桌面【Release任務(wù)C提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。dwd.fact_machine_learning_data表結(jié)構(gòu): 字段類型中文含義備注machine_record_idint主鍵machine_iddouble設(shè)備idmachine_record_statedouble設(shè)備狀態(tài)默認(rèn)0.0machine_record_mainshaft_speeddouble主軸轉(zhuǎn)速默認(rèn)0.0machine_record_mainshaft_multipleratedouble主軸倍率默認(rèn)0.0machine_record_mainshaft_loaddouble主軸負(fù)載默認(rèn)0.0machine_record_feed_speeddouble進(jìn)給倍率默認(rèn)0.0machine_record_feed_multipleratedouble進(jìn)給速度默認(rèn)0.0machine_record_pmc_codedoublePMC程序號(hào)默認(rèn)0.0machine_record_circle_timedouble循環(huán)時(shí)間默認(rèn)0.0machine_record_run_timedouble運(yùn)行時(shí)間默認(rèn)0.0machine_record_effective_shaftdouble有效軸數(shù)默認(rèn)0.0machine_record_amount_processdouble總加工個(gè)數(shù)默認(rèn)0.0machine_record_use_memorydouble已使用內(nèi)存默認(rèn)0.0machine_record_free_memorydouble未使用內(nèi)存默認(rèn)0.0machine_record_amount_use_codedouble可用程序量默認(rèn)0.0machine_record_amount_free_codedouble注冊(cè)程序量默認(rèn)0.0machine_record_datetimestamp記錄日期dwd_insert_userstringdwd_insert_timetimestampdwd_modify_userstringdwd_modify_timetimestamp 子任務(wù)二:報(bào)警預(yù)測(cè)1、根據(jù)子任務(wù)一的結(jié)果,建立隨機(jī)森林(隨機(jī)森林相關(guān)參數(shù)可自定義,不做限制),使用子任務(wù)一的結(jié)果訓(xùn)練隨機(jī)森林模型,然后再將dwd.fact_machine_learning_data_test(該表字段含義與dwd.fact_machine_learning_data表相同,machine_record_state列值為空,表結(jié)構(gòu)自行查看)轉(zhuǎn)成向量,預(yù)測(cè)其是否報(bào)警將結(jié)果輸出到MySQL數(shù)據(jù)庫(kù)shtd_industry中的ml_result表中(表結(jié)構(gòu)如下)。在Linux的MySQL命令行中查詢出machine_record_id為1、8、20、28和36的5條數(shù)據(jù),將SQL語(yǔ)句復(fù)制并粘貼至客戶端桌面【Release任務(wù)C提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下,將執(zhí)行結(jié)果截圖粘貼至客戶端桌面【Release任務(wù)C提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。ml_result表結(jié)構(gòu):字段類型中文含義備注machine_record_idint主鍵machine_record_statedouble設(shè)備狀態(tài)報(bào)警為1,其他狀態(tài)則為0 任務(wù)D:數(shù)據(jù)采集與實(shí)時(shí)計(jì)算(20分)環(huán)境說(shuō)明:服務(wù)端登錄地址詳見(jiàn)各任務(wù)服務(wù)端說(shuō)明。補(bǔ)充說(shuō)明:各節(jié)點(diǎn)可通過(guò)Asbru工具或SSH客戶端進(jìn)行SSH訪問(wèn);Flink任務(wù)在Yarn上用perjob模式(即Job分離模式,不采用Session模式),方便Yarn回收資源。子任務(wù)一:實(shí)時(shí)數(shù)據(jù)采集1、在主節(jié)點(diǎn)使用Flume采集/data_log目錄下實(shí)時(shí)日志文件中的數(shù)據(jù),將數(shù)據(jù)存入到Kafka的Topic中(Topic名稱分別為ChangeRecord、ProduceRecord和EnvironmentData,分區(qū)數(shù)為4),將Flume采集ChangeRecord主題的配置截圖粘貼至客戶端桌面【Release任務(wù)D提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;2、編寫(xiě)新的Flume配置文件,將數(shù)據(jù)備份到HDFS目錄/user/test/flumebackup下,要求所有主題的數(shù)據(jù)使用同一個(gè)Flume配置文件完成,將Flume的配置截圖粘貼至客戶端桌面【Release任務(wù)D提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。子任務(wù)二:使用Flink處理Kafka中的數(shù)據(jù)編寫(xiě)Scala代碼,使用Flink消費(fèi)Kafka中的數(shù)據(jù)并進(jìn)行相應(yīng)的數(shù)據(jù)統(tǒng)計(jì)計(jì)算。1、使用Flink消費(fèi)Kafka中ChangeRecord主題的數(shù)據(jù),實(shí)時(shí)統(tǒng)計(jì)每個(gè)設(shè)備從其他狀態(tài)轉(zhuǎn)變?yōu)椤斑\(yùn)行”狀態(tài)的總次數(shù),將結(jié)果存入MySQL數(shù)據(jù)庫(kù)shtd_industry的change_state_other_to_run_agg表中(表結(jié)構(gòu)如下)。請(qǐng)將任務(wù)啟動(dòng)命令復(fù)制粘貼至客戶端桌面【Release任務(wù)D提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下,啟動(dòng)1分鐘后根據(jù)change_machine_id 降序查詢change_state_other_to_run_agg表并截圖,啟動(dòng)2分鐘后根據(jù)change_machine_id降序查詢change_state_other_to_run_agg表并再次截圖,將兩次截圖粘貼至客戶端桌面【Release任務(wù)D提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;注:時(shí)間語(yǔ)義使用ProcessingTime。change_state_other_to_run_agg表:字段類型中文含義change_machine_idint設(shè)備idlast_machine_statevarchar上一狀態(tài)。即觸發(fā)本次統(tǒng)計(jì)的最近一次非運(yùn)行狀態(tài)total_change_torunint從其他狀態(tài)轉(zhuǎn)為運(yùn)行的總次數(shù)in_timevarcharflink計(jì)算完成時(shí)間(yyyy-MM-ddHH:mm:ss)1、使用Flink消費(fèi)Kafka中ChangeRecord主題的數(shù)據(jù),每隔1分鐘輸出最近3分鐘的預(yù)警次數(shù)最多的設(shè)備,將結(jié)果存入Redis中,key值為“warning_last3min_everymin_out”,value值為“窗口結(jié)束時(shí)間,設(shè)備id”(窗口結(jié)束時(shí)間格式:yyyy-MM-ddHH:mm:ss)。使用rediscli以HGETALLkey方式獲取warning_last3min_everymin_out值,將結(jié)果截圖粘貼至客戶端桌面【Release任務(wù)D提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下,需兩次截圖,第一次截圖和第二次截圖間隔1分鐘以上,第一次截圖放前面,第二次截圖放后面;注:時(shí)間語(yǔ)義使用ProcessingTime。2、使用Flink消費(fèi)Kafka中EnvironmentData主題的數(shù)據(jù),監(jiān)控各環(huán)境檢測(cè)設(shè)備數(shù)據(jù),當(dāng)溫度(Temperature字段)持續(xù)3分鐘高于38度時(shí)記錄為預(yù)警數(shù)據(jù),將結(jié)果存入Redis中,key值為“env_temperature_monitor”,value值為“設(shè)備id-預(yù)警信息生成時(shí)間,預(yù)警信息”(預(yù)警信息生成時(shí)間格式:yyyy-MM-ddHH:mm:ss)。使用rediscli以HGETALL key方式獲取env_temperature_monitor值,將結(jié)果截圖粘貼至客戶端桌面【Release任務(wù)D提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下,需要Flink啟動(dòng)運(yùn)行6分鐘以后再截圖。注:時(shí)間語(yǔ)義使用ProcessingTime。value示例:114-2022-01-0114:12:19,設(shè)備114連續(xù)三分鐘溫度高于38度請(qǐng)及時(shí)處理!中文內(nèi)容及格式必須為示例所示內(nèi)容。同一設(shè)備3分鐘只預(yù)警一次。 任務(wù)E:數(shù)據(jù)可視化(15分)環(huán)境說(shuō)明:數(shù)據(jù)接口地址及接口描述詳見(jiàn)各任務(wù)服務(wù)端說(shuō)明。注:所有數(shù)據(jù)排序按照接口返回?cái)?shù)據(jù)順序處理即可,不用特意排序。子任務(wù)一:用折線圖展示PM2.5濃度變化編寫(xiě)Vue工程代碼,根據(jù)接口,用折線圖展示PM2.5濃度變化,同時(shí)將用于圖表展示的數(shù)據(jù)結(jié)構(gòu)在瀏覽器的console中進(jìn)行打印輸出,將圖表可視化結(jié)果和瀏覽器console打印結(jié)果分別截圖并粘貼至客戶端桌面【Release任務(wù)E提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。子任務(wù)二:用餅狀圖展示每日各狀態(tài)總時(shí)長(zhǎng)編寫(xiě)Vue工程代碼,根據(jù)接口,用餅狀圖展示每日各狀態(tài)總時(shí)長(zhǎng)(秒),同時(shí)將用于圖表展示的數(shù)據(jù)結(jié)構(gòu)在瀏覽器的console中進(jìn)行打印輸出,將圖表可視化結(jié)果和瀏覽器console打印結(jié)果分別截圖并粘貼至客戶端桌面【Release任務(wù)E提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。子任務(wù)三:用柱狀圖展示每日所有車間各設(shè)備平均運(yùn)行時(shí)長(zhǎng)編寫(xiě)Vue工程代碼,根據(jù)接口,用柱狀圖展示每日所有車間各設(shè)備平均運(yùn)行時(shí)長(zhǎng)(秒,四舍五入保留兩位小數(shù)),同時(shí)將用于圖表展示的數(shù)據(jù)結(jié)構(gòu)在瀏覽器的console中進(jìn)行打印輸出,將圖表可視化結(jié)果和瀏覽器console打印結(jié)果分別截圖并粘貼至客戶端桌面【Release任務(wù)E提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。子任務(wù)四:用單軸散點(diǎn)圖展示設(shè)備運(yùn)行時(shí)長(zhǎng) 編寫(xiě)Vue工程代碼,根據(jù)接口,用單軸散點(diǎn)圖展示設(shè)備運(yùn)行時(shí)長(zhǎng)(秒),同時(shí)將用于圖表展示的數(shù)據(jù)結(jié)構(gòu)在瀏覽器的console中進(jìn)行打印輸出,將圖表可視化結(jié)果和瀏覽器console打印結(jié)果分別截圖并粘貼至客戶端桌面【Release任務(wù)E提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。子任務(wù)五:用單軸散點(diǎn)圖展示各設(shè)備加工每件產(chǎn)品所需時(shí)長(zhǎng)編寫(xiě)Vue工程代碼,根據(jù)接口,用單軸散點(diǎn)圖展示各設(shè)備加工每件產(chǎn)品所需時(shí)長(zhǎng)(秒),同時(shí)將用于圖表展示的數(shù)據(jù)結(jié)構(gòu)在瀏覽器的console中進(jìn)行打印輸出,將圖表可視化結(jié)果和瀏覽器console打印結(jié)果分別截圖并粘貼至客戶端桌面【Release任務(wù)E提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。 任務(wù)F:綜合分析(10分)子任務(wù)一:Kafka中的數(shù)據(jù)如何保證不丟失?在任務(wù)D中使用到了Kafka,將內(nèi)容編寫(xiě)至客戶端桌面【Release任務(wù)F提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。子任務(wù)二:請(qǐng)簡(jiǎn)述HBase的rowkey設(shè)計(jì)原則。請(qǐng)簡(jiǎn)要概述HBase的rowkey的重要性并說(shuō)明在設(shè)計(jì)rowkey時(shí)應(yīng)遵循哪些原則,將內(nèi)容編寫(xiě)至客戶端桌面【Release任務(wù)F提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。子任務(wù)三:數(shù)據(jù)倉(cāng)庫(kù)中怎么處理緩慢變化維,有哪幾種方式?在任務(wù)B的數(shù)據(jù)倉(cāng)庫(kù)的設(shè)計(jì)過(guò)程中,會(huì)出現(xiàn)緩慢變化維的問(wèn)題,緩慢變化維是指一些維度表的數(shù)據(jù)不是靜態(tài)的,而是會(huì)隨著時(shí)間而緩慢地變化,在數(shù)倉(cāng)設(shè)計(jì)中有哪些方式應(yīng)對(duì)這些問(wèn)題?將內(nèi)容編寫(xiě)至客戶端桌面【Release任務(wù)F提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。
最近更新
更多
大家都在看
近期熱門(mén)
關(guān)閉