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

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

ID:83631039

大?。?7.07 KB

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

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

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

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

2023年全國(guó)職業(yè)院校技能大賽賽題第04套賽項(xiàng)名稱:大數(shù)據(jù)應(yīng)用開發(fā)英文名稱:BigDataApplicationDevelopment賽項(xiàng)組別:高等職業(yè)教育組賽項(xiàng)編號(hào):GZ03321 背景描述工業(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ǔ)開發(fā)語(yǔ)言,基于大數(shù)據(jù)平臺(tái)綜合利用Hudi、Spark、Flink、Vue.js等技術(shù),對(duì)數(shù)據(jù)進(jìn)行處理、分析及可視化呈現(xiàn),你們作為該小組的技術(shù)人員,請(qǐng)按照下面任務(wù)完成本次工作。21 任務(wù)A:大數(shù)據(jù)平臺(tái)搭建(容器環(huán)境)(15分)環(huán)境說(shuō)明:服務(wù)端登錄地址詳見各任務(wù)服務(wù)端說(shuō)明。補(bǔ)充說(shuō)明:宿主機(jī)及各容器節(jié)點(diǎn)可通過(guò)Asbru工具或SSH客戶端進(jìn)行SSH訪問(wèn)。子任務(wù)一:Hadoop完全分布式安裝配置本任務(wù)需要使用root用戶完成相關(guān)配置,安裝Hadoop需要配置前置環(huán)境。命令中要求使用絕對(duì)路徑,具體要求如下:1、從宿主機(jī)/opt目錄下將文件hadoop-3.1.3.tar.gz、jdk-8u212-linux-x64.tar.gz復(fù)制到容器Master中的/opt/software路徑中(若路徑不存在,則需新建),將Master節(jié)點(diǎn)JDK安裝包解壓到/opt/module路徑中(若路徑不存在,則需新建),將JDK解壓命令復(fù)制并粘貼至客戶端桌面【Release任務(wù)A提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;2、修改容器中/etc/profile文件,設(shè)置JDK環(huán)境變量并使其生效,配置完畢后在Master節(jié)點(diǎn)分別執(zhí)行“java-version”和“javac”命令,將命令行執(zhí)行結(jié)果分別截圖并粘貼至客戶端桌面【Release任務(wù)A提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;3、請(qǐng)完成host相關(guān)配置,將三個(gè)節(jié)點(diǎn)分別命名為master、slave1、slave2,并做免密登錄,用scp命令并使用絕對(duì)路徑從Master復(fù)制JDK解壓后的安裝文件到slave1、slave2節(jié)點(diǎn)(若路徑不存在,則需新建),并配置slave1、slave2相關(guān)環(huán)境變量,將全部scp復(fù)制JDK的命令復(fù)制并粘貼至客戶端桌面【Release任務(wù)A提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;4、在Master將Hadoop解壓到/opt/module(若路徑不存在,則需新建)目錄下,并將解壓包分發(fā)至slave1、slave2中,其中master、slave1、slave221 節(jié)點(diǎn)均作為datanode,配置好相關(guān)環(huán)境,初始化Hadoop環(huán)境namenode,將初始化命令及初始化結(jié)果截圖(截取初始化結(jié)果日志最后20行即可)粘貼至客戶端桌面【Release任務(wù)A提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;1、啟動(dòng)Hadoop集群(包括hdfs和yarn),使用jps命令查看Master節(jié)點(diǎn)與slave1節(jié)點(diǎn)的Java進(jìn)程,將jps命令與結(jié)果截圖粘貼至客戶端桌面【Release任務(wù)A提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。子任務(wù)二:SparkonYarn安裝配置本任務(wù)需要使用root用戶完成相關(guān)配置,已安裝Hadoop及需要配置前置環(huán)境,具體要求如下:1、從宿主機(jī)/opt目錄下將文件spark-3.1.1-bin-hadoop3.2.tgz復(fù)制到容器Master中的/opt/software(若路徑不存在,則需新建)中,將Spark包解壓到/opt/module路徑中(若路徑不存在,則需新建),將完整解壓命令復(fù)制粘貼至客戶端桌面【Release任務(wù)A提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;2、修改容器中/etc/profile文件,設(shè)置Spark環(huán)境變量并使環(huán)境變量生效,在/opt目錄下運(yùn)行命令spark-submit--version,將命令與結(jié)果截圖粘貼至客戶端桌面【Release任務(wù)A提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;3、完成onyarn相關(guān)配置,使用sparkonyarn的模式提交$SPARK_HOME/examples/jars/spark-examples_2.12-3.1.1.jar運(yùn)行的主類為org.apache.spark.examples.SparkPi,將運(yùn)行結(jié)果截圖粘貼至客戶端桌面【Release任務(wù)A提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下(截取Pi結(jié)果的前后各5行)。(運(yùn)行命令為:spark-submit--masteryarn--classorg.apache.spark.examples.SparkPi$SPARK_HOME/examples/jars/spark-examples_2.12-3.1.1.jar)子任務(wù)三:Hudi安裝配置本任務(wù)需要使用root用戶完成相關(guān)配置,具體要求如下:1、從宿主機(jī)/opt目錄下將maven相關(guān)安裝包復(fù)制到容器Master中的21 /opt/software(若路徑不存在,則需新建)中,將maven相關(guān)安裝包解壓到/opt/module/目錄下(若路徑不存在,則需新建)并配置maven本地庫(kù)為/opt/software/RepMaven/,遠(yuǎn)程倉(cāng)庫(kù)使用阿里云鏡像,配置maven的環(huán)境變量,并在/opt/下執(zhí)行mvn-v,將運(yùn)行結(jié)果截圖粘貼至客戶端桌面【Release任務(wù)A提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;nexus-aliyuncentralNexusaliyunhttp://maven.aliyun.com/nexus/content/groups/public1、從宿主機(jī)/opt目錄下將Hudi相關(guān)安裝包復(fù)制到容器Master中的/opt/software(若路徑不存在,則需新建)中,將Hudi相關(guān)安裝包解壓到/opt/module/目錄下(若路徑不存在,則需新建),將命令復(fù)制并粘貼至客戶端桌面【Release任務(wù)A提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;2、完成解壓安裝及配置后使用maven對(duì)Hudi進(jìn)行構(gòu)建(spark3.1,scala-2.12),編譯完成后與Spark集成,集成后使用spark-shell操作Hudi,將spark-shell啟動(dòng)使用spark-shell運(yùn)行下面給到的案例,并將最終查詢結(jié)果截圖粘貼至客戶端桌面【Release任務(wù)A提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。(提示:編譯需要替換以下內(nèi)容:1.將父模塊pom.xml替換;2.hudi-common/src/main/java/org/apache/hudi/common/table/log/block/HoodieParquetDataBlock.java替換;2.將packaging/hudi-spark-bundle/pom.xml替換;3.將packaging/hudi-utilities-bundle/pom.xml替換)importorg.apache.hudi.QuickstartUtils._importscala.collection.JavaConversions._importorg.apache.spark.sql.SaveMode._importorg.apache.hudi.DataSourceReadOptions._importorg.apache.hudi.DataSourceWriteOptions._importorg.apache.hudi.config.HoodieWriteConfig._importorg.apache.hudi.common.model.HoodieRecord21 valtableName="hudi_trips_cow"valbasePath="file:///tmp/hudi_trips_cow"valdataGen=newDataGeneratorvalinserts=convertToStringList(dataGen.generateInserts(10))valdf=spark.read.json(spark.sparkContext.parallelize(inserts,2))df.write.format("hudi").options(getQuickstartWriteConfigs).option(PRECOMBINE_FIELD_OPT_KEY,"ts").option(RECORDKEY_FIELD_OPT_KEY,"uuid").option(PARTITIONPATH_FIELD_OPT_KEY,"partitionpath").option(TABLE_NAME,tableName).mode(Overwrite).save(basePath)valtripsSnapshotDF=spark.read.format("hudi").load(basePath+"/*/*/*/*")tripsSnapshotDF.createOrReplaceTempView("hudi_trips_snapshot")spark.sql("selectfare,begin_lon,begin_lat,tsfromhudi_trips_snapshotwherefare>20.0").show()21 任務(wù)B:離線數(shù)據(jù)處理(25分)環(huán)境說(shuō)明:服務(wù)端登錄地址詳見各任務(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ù)抽取編寫Scala代碼,使用Spark將MySQL庫(kù)中表ChangeRecord,BaseMachine,MachineData,ProduceRecord全量抽取到Hudi的hudi_gy_ods庫(kù)(路徑為/user/hive/warehouse/hudi_gy_ods.db)中對(duì)應(yīng)表changerecord,basemachine,machinedata,producerecord中。1、抽取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í)行selectcount(*)fromhudi_gy_ods.changerecord命令,將spark-sql的cli執(zhí)行結(jié)果分別截圖粘貼至客戶端桌面【Release任務(wù)B提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;2、抽取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í)行showpartitionshudi_gy_ods.b21 asemachine命令,將cli的執(zhí)行結(jié)果分別截圖粘貼至客戶端桌面【Release任務(wù)B提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;1、抽取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í)行showpartitionshudi_gy_ods.producerecord命令,將spark-sql的cli的執(zhí)行結(jié)果分別截圖粘貼至客戶端桌面【Release任務(wù)B提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下;2、抽取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í)行showpartitionshudi_gy_ods.machinedata命令,將cli的執(zhí)行結(jié)果分別截圖粘貼至客戶端桌面【Release任務(wù)B提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。子任務(wù)二:數(shù)據(jù)清洗編寫Scala代碼,使用Spark將hudi_gy_ods庫(kù)中相應(yīng)表數(shù)據(jù)全量抽取到Hudi的hudi_gy_dwd庫(kù)(路徑為/user/hive/warehouse/hudi_gy_dwd.db)中對(duì)應(yīng)表中。表中有涉及到timestamp類型的,均要求按照yyyy-MM-ddHH:mm:ss,不記錄毫秒數(shù),若原數(shù)據(jù)中只有年月日,則在時(shí)分秒的位置添加00:00:00,添加之后使其符合yyyy-MM-ddHH:mm:ss。1、抽取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)表該值相等,并添加21 dwd_insert_user、dwd_insert_time、dwd_modify_user、dwd_modify_time四列,其中dwd_insert_user、dwd_modify_user均填寫“user1”,dwd_insert_time、dwd_modify_time均填寫當(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)下;1、抽取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均填寫“user1”,dwd_insert_time、dwd_modify_time均填寫當(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)下;2、抽取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均填寫“user1”,dwd_insert_time、dwd_modify_time均填寫當(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)下;3、抽取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)表該值相等,并添加21 dwd_insert_user、dwd_insert_time、dwd_modify_user、dwd_modify_time四列,其中dwd_insert_user、dwd_modify_user均填寫“user1”,dwd_insert_time、dwd_modify_time均填寫當(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輸出“開始”作為工作流的第一個(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)下;2、編寫Scala代碼,使用Spark根據(jù)hudi_gy_dwd層的fact_change_record表統(tǒng)計(jì)每個(gè)月(change_start_time的月份)、每個(gè)設(shè)備、每種狀態(tài)的時(shí)長(zhǎng),若某狀態(tài)當(dāng)前未結(jié)束(即change_end_time值為空)則該狀態(tài)不參與計(jì)算。計(jì)算結(jié)果存入ClickHouse數(shù)據(jù)庫(kù)shtd_industry的machine_state_time表中(表結(jié)構(gòu)如下),然后在Linux的ClickHouse命令行中根據(jù)設(shè)備id、狀態(tài)持續(xù)時(shí)長(zhǎng)均為降序排序,查詢出前10條,將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_idint設(shè)備id21 change_record_statevarchar狀態(tài)duration_timevarchar持續(xù)時(shí)長(zhǎng)(秒)當(dāng)月該狀態(tài)的時(shí)長(zhǎng)和yearint年?duì)顟B(tài)產(chǎn)生的年monthint月狀態(tài)產(chǎn)生的月1、編寫Scala代碼,使用Spark根據(jù)hudi_gy_dwd層的fact_change_record表關(guān)聯(lián)dim_machine表統(tǒng)計(jì)每個(gè)車間中所有設(shè)備運(yùn)行時(shí)長(zhǎng)(即設(shè)備狀態(tài)為“運(yùn)行”)的中位數(shù)在哪個(gè)設(shè)備(為偶數(shù)時(shí),兩條數(shù)據(jù)原樣保留輸出),若某個(gè)設(shè)備運(yùn)行狀態(tài)當(dāng)前未結(jié)束(即change_end_time值為空)則該狀態(tài)不參與計(jì)算,計(jì)算結(jié)果存入ClickHouse數(shù)據(jù)庫(kù)shtd_industry的machine_running_median表中(表結(jié)構(gòu)如下),然后在Linux的ClickHouse命令行中根據(jù)所屬車間、設(shè)備id均為降序排序,查詢出前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)下;字段類型中文含義備注machine_idint設(shè)備idmachine_factoryint所屬車間total_running_timeint運(yùn)行總時(shí)長(zhǎng)結(jié)果以秒為單位21 1、編寫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字段為開始加工時(shí)間,produce_code_end_time字段為完成加工時(shí)間),將設(shè)備每個(gè)產(chǎn)品的耗時(shí)與該設(shè)備平均耗時(shí)作比較,保留耗時(shí)高于平均值的產(chǎn)品數(shù)據(jù),將得到的數(shù)據(jù)寫入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í)單位:秒21 任務(wù)C:數(shù)據(jù)挖掘(10分)環(huán)境說(shuō)明:服務(wù)端登錄地址詳見各任務(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編寫,利用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ù)沒有相關(guān)值,則按下表設(shè)置默認(rèn)值),同時(shí)轉(zhuǎn)換machine_record_state字段的值,若值為報(bào)警,則填寫1,否則填寫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):21 字段類型中文含義備注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_timetimestamp21 子任務(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)則為021 任務(wù)D:數(shù)據(jù)采集與實(shí)時(shí)計(jì)算(20分)環(huán)境說(shuō)明:服務(wù)端登錄地址詳見各任務(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、編寫新的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ù)編寫Scala工程代碼,使用Flink消費(fèi)Kafka中的數(shù)據(jù)并進(jìn)行相應(yīng)的數(shù)據(jù)統(tǒng)計(jì)計(jì)算。1、使用Flink消費(fèi)Kafka中ProduceRecord主題的數(shù)據(jù),統(tǒng)計(jì)在已經(jīng)檢驗(yàn)的產(chǎn)品中,各設(shè)備每5分鐘生產(chǎn)產(chǎn)品總數(shù),將結(jié)果存入Redis中,key值為“totalproduce”,value值為“設(shè)備id,最近五分鐘生產(chǎn)總數(shù)”。使用rediscli以HGETALLkey方式獲取totalproduce值,將結(jié)果截圖粘貼至客戶端桌面【Release任務(wù)D提交結(jié)果21 .docx】中對(duì)應(yīng)的任務(wù)序號(hào)下,需兩次截圖,第一次截圖和第二次截圖間隔5分鐘以上,第一次截圖放前面,第二次截圖放后面;注:ProduceRecord主題,生產(chǎn)一個(gè)產(chǎn)品產(chǎn)生一條數(shù)據(jù);change_handle_state字段為1代表已經(jīng)檢驗(yàn),0代表未檢驗(yàn);時(shí)間語(yǔ)義使用ProcessingTime。1、使用Flink消費(fèi)Kafka中ChangeRecord主題的數(shù)據(jù),當(dāng)某設(shè)備30秒狀態(tài)連續(xù)為“預(yù)警”,輸出預(yù)警信息。當(dāng)前預(yù)警信息輸出后,最近30秒不再重復(fù)預(yù)警(即如果連續(xù)1分鐘狀態(tài)都為“預(yù)警”只輸出兩次預(yù)警信息),將結(jié)果存入Redis中,key值為“warning30sMachine”,value值為“設(shè)備id,預(yù)警信息”。使用rediscli以HGETALLkey方式獲取warning30sMachine值,將結(jié)果截圖粘貼至客戶端桌面【Release任務(wù)D提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下,需兩次截圖,第一次截圖和第二次截圖間隔1分鐘以上,第一次截圖放前面,第二次截圖放后面;注:時(shí)間使用change_start_time字段,忽略數(shù)據(jù)中的change_end_time不參與任何計(jì)算。忽略數(shù)據(jù)遲到問(wèn)題。Redis的value示例:115,2022-01-0109:53:10:設(shè)備115連續(xù)30秒為預(yù)警狀態(tài)請(qǐng)盡快處理!(2022-01-0109:53:10為change_start_time字段值,中文內(nèi)容及格式必須為示例所示內(nèi)容。)2、使用Flink消費(fèi)Kafka中ChangeRecord主題的數(shù)據(jù),統(tǒng)計(jì)每3分鐘各設(shè)備狀態(tài)為“預(yù)警”且未處理的數(shù)據(jù)總數(shù),將結(jié)果存入MySQL數(shù)據(jù)庫(kù)shtd_industry的threemin_warning_state_agg表中(追加寫入,表結(jié)構(gòu)如下)。請(qǐng)將任務(wù)啟動(dòng)命令復(fù)制粘貼至客戶端桌面【Release任務(wù)D提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下,啟動(dòng)且數(shù)據(jù)進(jìn)入后按照設(shè)備id升序排序查詢threemin_warning_state_agg表進(jìn)行截圖,第一次截圖后等待3分鐘再次查詢并截圖,將結(jié)果截圖粘貼至客戶端桌面【Release任務(wù)D提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。21 threemin_warning_state_agg表:字段類型中文含義change_machine_idint設(shè)備idtotalwarningint未被處理預(yù)警的數(shù)據(jù)總數(shù)window_end_timevarchar窗口結(jié)束時(shí)間(yyyy-MM-ddHH:mm:ss)注:時(shí)間語(yǔ)義使用ProcessingTime。21 任務(wù)E:數(shù)據(jù)可視化(15分)環(huán)境說(shuō)明:數(shù)據(jù)接口地址及接口描述詳見各任務(wù)服務(wù)端說(shuō)明。注:所有數(shù)據(jù)排序按照接口返回?cái)?shù)據(jù)順序處理即可,不用特意排序。子任務(wù)一:用柱狀圖展示設(shè)備歷史各個(gè)狀態(tài)持續(xù)時(shí)長(zhǎng)編寫Vue工程代碼,根據(jù)接口,用柱狀圖展示接口所有數(shù)據(jù)中各設(shè)備各個(gè)狀態(tài)持續(xù)時(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)編寫Vue工程代碼,根據(jù)接口,用柱狀圖展示每日所有車間各設(shè)備平均運(yùn)行時(shí)長(zhǎng)(秒,四舍五入保留兩位小數(shù)),每日里的所有設(shè)備按照接口返回的數(shù)據(jù)順序展示即可,同時(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)編寫Vue工程代碼,根據(jù)接口,用折線圖展示設(shè)備OP160每日的運(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ù)四:用條形圖展示每日各設(shè)備產(chǎn)量21 編寫Vue工程代碼,根據(jù)接口,用條形圖展示每日各設(shè)備產(chǎn)量,同時(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è)備日均產(chǎn)量和所在車間日均產(chǎn)量編寫Vue工程代碼,根據(jù)接口,用折柱混合圖展示設(shè)備日均產(chǎn)量(四舍五入保留兩位小數(shù))和所在車間日均產(chǎn)量(四舍五入保留兩位小數(shù)),其中柱狀圖展示各設(shè)備的日均產(chǎn)量,折線圖展示該設(shè)備所在車間的日均產(chǎn)量,同時(shí)將用于圖表展示的數(shù)據(jù)結(jié)構(gòu)在瀏覽器的console中進(jìn)行打印輸出,將圖表可視化結(jié)果和瀏覽器console打印結(jié)果分別截圖并粘貼至客戶端桌面【Release任務(wù)E提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。21 任務(wù)F:綜合分析(10分)子任務(wù)一:請(qǐng)簡(jiǎn)述ZooKeeper的選舉策略,leader和follower的區(qū)別。請(qǐng)概述ZooKeeper的選舉策略、leader和follower的區(qū)別,將內(nèi)容編寫至客戶端桌面【Release任務(wù)F提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。子任務(wù)二:請(qǐng)簡(jiǎn)述MapReduce的Shuffle過(guò)程。請(qǐng)簡(jiǎn)述MapReduce的Shuffle過(guò)程,將內(nèi)容編寫至客戶端桌面【Release任務(wù)F提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。子任務(wù)三:請(qǐng)根據(jù)可視化圖表做以下分析。如果你是工廠技術(shù)人員,通過(guò)可視化結(jié)果你將會(huì)對(duì)工廠設(shè)備優(yōu)化(不限于該角度,考生自行擴(kuò)展分析角度)做出哪些建議,將內(nèi)容編寫至客戶端桌面【Release任務(wù)F提交結(jié)果.docx】中對(duì)應(yīng)的任務(wù)序號(hào)下。21

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

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

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(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)系客服處理。
最近更新
更多
大家都在看
近期熱門
關(guān)閉