2023年全國職業院校技能大賽中職組大數據應用與服務賽項題庫參考答案陸續更新中,敬請期待…

2023年全國職業院校技能大賽中職組大數據應用與服務賽項題庫參考答案陸續更新中,敬請期待…
武漢唯眾智創科技有限公司
2024 年 2 月
聯系人:辜渝儐13037102709

題號:試題01

模塊二:數據獲取與處理

(一)任務一:數據獲取與清洗

1.子任務一:數據獲取
(1)啟動Hadoop集群,使用HDFS Shell指令,在HDFS根目錄下級聯創建一個名為/behavior/origin_log的目錄,用于存儲采集到的用戶行為日志;
答:hadoop fs -mkdir -p /behavior/origin_log
(2)目錄創建完成,使用HDFS Shell指令,將本地/root/eduhq/data/app_log/behavior目錄下的所有用戶行為日志文件采集至HDFS的/behavior/origin_log目錄下;
答:hadoop fs -put /root/eduhq/data/app_log/behavior/* /behavior/origin_log
(3)采集完成,在本機打開瀏覽器,訪問http://本機主機名:9870或http://本機IP地址:9870進入HDFS WebUI界面,查看是否成功將數據采集到HDFS上。
答:使用瀏覽器訪問即可。
2.子任務二:數據清洗
(1)使用Windows操作系統上的Excel軟件,打開名為
"behavior2023-01-01.csv"的文件;
(2)對數據進行清洗,專注處理名為"behavior2023- 01-01.csv"的文件中的"time"列。將時間日期格式進行分列,分別處理為日期和時間兩列。
答:
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

(二)任務二:數據標注

開 發 一 個 簡 單 的 Java 類 IpToLocUdf , 繼 承
org.apache.hadoop.hive.ql.udf.generic.GenericUDF ,重載initialize()、evaluate()和 getDisplayString()方法;該類需要實現通過 IP 從/root/eduhq/data/area.json文件中隨機獲取“省份”和“城市”信息,完成數據的分類標注。
答:

import org.apache.hadoop.hive.ql.exec.UDFArgumentException;
import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException;
import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException;
import org.apache.hadoop.hive.ql.metadata.HiveException;
import org.apache.hadoop.hive.ql.udf.generic.GenericUDF;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
import org.apache.hadoop.hive.serde2.objectinspector.primitive.StringObjectInspector;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.node.ObjectNode;import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;public class IpToLocUdf extends GenericUDF {private StringObjectInspector stringInspector;private ObjectInspector outputOI;// 初始化函數,用于設置函數參數和輸出類型/*這個initialize方法的主要作用是驗證輸入參數的數量和類型,并設置輸出類型為字符串。如果輸入參數不符合要求,它將拋出異常。最后,它返回一個輸出類型的ObjectInspector,供其他方法使用。*/@Overridepublic ObjectInspector initialize(ObjectInspector[] arguments) throws UDFArgumentException {// 檢查參數數量是否為1,如果不是則拋出異常if (arguments.length != 1) {throw new UDFArgumentLengthException("The function iptoloc(ip) takes exactly 1 argument.");}// 檢查第一個參數是否為StringObjectInspector類型,如果不是則拋出異常if (!(arguments[0] instanceof StringObjectInspector)) {throw new UDFArgumentTypeException(0,"The argument must be a string, but " + arguments[0].getTypeName()+ " was given.");}// 將第一個參數設置為字符串類型的ObjectInspectorthis.stringInspector = (StringObjectInspector) arguments[0];// 設置輸出類型為字符串,通過反射創建ObjectInspector實例this.outputOI = ObjectInspectorFactory.getReflectionObjectInspector(String.class,ObjectInspectorFactory.ObjectInspectorOptions.JAVA);// 打印輸出類型的ObjectInspector信息System.out.println(outputOI);return outputOI; // 返回輸出類型的ObjectInspector,供其他方法使用}@Overridepublic Object evaluate(DeferredObject[] arguments) throws HiveException {// 獲取傳入的IP地址參數String ip = stringInspector.getPrimitiveJavaObject(arguments[0].get());// 從指定文件中讀取地區信息//File file = new File("/root/eduhq/data/area.json");File file = new File("/resources/area.json");ObjectMapper mapper = new ObjectMapper();List<String> provinces = new ArrayList<>();List<String> cities = new ArrayList<>();try {// 解析JSON文件JsonNode rootNode = mapper.readTree(file);// 遍歷JSON節點,獲取省份和城市信息for (JsonNode node : rootNode) {String province = node.path("province").getTextValue();String city = node.path("city").getTextValue();provinces.add(province);cities.add(city);}} catch (IOException e) {throw new HiveException("Failed to read area.json file: " + e.getMessage(), e);}// 根據IP地址進行分類標注int index = ipToIndex(ip);String province = provinces.get(index);String city = cities.get(index);// 返回分類標注結果ObjectNode result = mapper.createObjectNode();result.put("province", province);result.put("city", city);return result.toString();}@Overridepublic String getDisplayString(String[] children) {return "iptoloc(" + children[0] + ")";}private int ipToIndex(String ip) {// 根據IP地址的某種算法得到索引值// 這里簡單地使用IP地址的字符長度模擬算法return ip.length() % 7;}
}
<dependency><groupId>org.apache.hive</groupId><artifactId>hive-exec</artifactId><version>3.1.2</version></dependency>

(三)任務三:數據統計

1.子任務一:HDFS 文件上傳下載
( 1 ) 將包“ com.hive.udf ”導出為名為 hive-udf- behavior-1.0.0.jar 的 JAR 文件, 并 保 存在 本地 的
/root/eduhq/udf_jars 目錄中;
答:https://blog.csdn.net/gb4215287/article/details/132793531
(2)將打包文件 hive-udf-behavior-1.0.0.jar 上傳到HDFS 的/hive/udf_jars 目錄下;
答:hadoop fs -put hive-udf-behavior-1.0.0.jar /hive/udf_jars
(3)在 Hive 客戶端,創建永久函數 url_trans 和get_city_by_ip,并將它們與開發好的 class 相關聯;
答:

add jar /root/eduhq/udf_jars/hive-udf-behavior-1.0.0.jar
create function url_trans as com.hive.udf.url_trans;
create function get_city_by_ip as com.hive.udf.get_city_by_ip;

(4)在 Hive 客戶端,使用 select 語句測試url_trans和get_city_by_ip 函數;
**答:**根據具體作用使用。例如:

select get_city_by_ip(ip);

(5)啟動 Hive 的動態分區功能,并將 Hive 設置為非嚴格模式;
答:

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nostrict;

(6)使用 insert overwrite … select …子句將ods_behavior_log 表中數據插入分區表 dwd_behavior_log中,并實現根據 dt 進行動態分區。
答:insert overwrite table dwd_behavior_log PARTITION (dt) select *,date_format(dt,'yyyy-MM-dd') from ods_behavior_log;
2.子任務二:數據統計
(1)查看dwd_behavior_log表的所有現有分區;
答:SHOW PARTITIONS dwd_behavior_log;
(2)查看外部表dwd_behavior_log的前3行數據,并驗證URL協議是否被統一為“http”,以及通過IP是否能夠獲取到“省份”和“城市”信息;
答:

SELECT * FROM dwd_behavior_log LIMIT 3;
SELECT URL FROM dwd_behavior_log WHERE URL LIKE 'http://%';
返回所有以“http://”開頭的URL。如果返回的行數大于0,則說明URL協議被統一為“http”。
通過ip獲取省份,例如:select get_city_by_ip(ip);

(3)統計外部表dwd_behavior_log數據總行數。
答:SELECT COUNT(*) FROM dwd_behavior_log;

更多內容請聯系
武漢唯眾智創科技有限公司
欲了解更多信息,歡迎登錄www.whwzzc.com,咨詢電話13037102709
*本資料產品圖片及技術數據僅供參考,如有更新恕不另行通知,具體內容解釋權歸唯眾所有。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/719442.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719442.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719442.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Ainx的全局配置

&#x1f4d5;作者簡介&#xff1a; 過去日記&#xff0c;致力于Java、GoLang,Rust等多種編程語言&#xff0c;熱愛技術&#xff0c;喜歡游戲的博主。 &#x1f4d7;本文收錄于Ainx系列&#xff0c;大家有興趣的可以看一看 &#x1f4d8;相關專欄Rust初階教程、go語言基礎系列…

js中的閉包

理解 函數內部可以訪問其外函數中的作用域 作用 創建私有變量延長變量的聲明周期一般函數中的變量在函數返回之后就會被銷毀,但是閉包會保存使用的變量,即便是上下文被摧毀了,使用的變量依舊存在 閉包的用途 柯里化函數的目的就是在避免重復的調用變量案例 求一個長方形的…

ROS2 Python環境變量PYTHONPATH設置

文章目錄 引題解決方法方法一 將三方庫與pkg放在一起方法二 將三方庫放入pythonpath目錄 引題 ROS2在執行ros2 pkg create --build-type ament_python **創建python包時&#xff0c;有時候會涉及外部庫的導入&#xff0c;這里講解一下如何配置PYTHONPATH變量讓程序順利找到外部…

【S32DS報錯】-7-程序進入HardFault_Handler,無法正常運行

【S32K3_MCAL從入門到精通】合集&#xff1a; S32K3_MCAL從入門到精通https://blog.csdn.net/qfmzhu/category_12519033.html 問題背景&#xff1a; 在S32DS IDE中使用PEmicro&#xff08;Multilink ACP&#xff0c;Multilink Universal&#xff0c;Multilink FX&#xff09…

【網站項目】182在線作業管理系統

&#x1f64a;作者簡介&#xff1a;擁有多年開發工作經驗&#xff0c;分享技術代碼幫助學生學習&#xff0c;獨立完成自己的項目或者畢業設計。 代碼可以私聊博主獲取。&#x1f339;贈送計算機畢業設計600個選題excel文件&#xff0c;幫助大學選題。贈送開題報告模板&#xff…

程序員職業迷宮:選擇你的道路,開啟技術之旅

在這個數字化飛速發展的時代&#xff0c;程序員已經成為了一個備受矚目的職業。他們就像是現代社會中的魔法師&#xff0c;用代碼搭建起一個又一個令人驚嘆的數字世界。然而&#xff0c;對于許多初入行的程序員來說&#xff0c;面對前端的花園、后端的洞穴、數據科學的密室&…

【Python】進階學習:pandas--describe()函數的使用介紹

&#x1f40d;【Python】進階學習&#xff1a;pandas——describe()函數的使用介紹 &#x1f308; 個人主頁&#xff1a;高斯小哥 &#x1f525; 高質量專欄&#xff1a;Matplotlib之旅&#xff1a;零基礎精通數據可視化、Python基礎【高質量合集】、PyTorch零基礎入門教程&am…

繪圖機器 - 華為OD統一考試(C卷)

OD統一考試&#xff08;C卷&#xff09; 分值&#xff1a; 100分 題解&#xff1a; Java / Python / C 題目描述 繪圖機器的繪圖筆初始位置在原點&#xff08;0, 0&#xff09;&#xff0c;機器啟動后其繪圖筆按下面規則繪制直線&#xff1a; 1&#xff09;嘗試沿著橫向坐標軸…

小程序海報生成海報【vue】

文章目錄 1、創建海報的基本邏輯2、用canvas繪制文字3、繪制矩形4、繪制圓形5、繪制圓角矩形6、繪制圖片7、執行繪制8、完整的代碼 1、創建海報的基本邏輯 1、先創建dom元素 wrapperHeight是根據海報的內容計算出來海報的高度 <view class"preview-card-wrap" ta…

支持向量機 SVM | 線性可分:硬間隔模型公式推導

目錄 一. SVM的優越性二. SVM算法推導小節概念 在開始講述SVM算法之前&#xff0c;我們先來看一段定義&#xff1a; 支持向量機(Support VecorMachine, SVM)本身是一個二元分類算法&#xff0c;支持線性分類和非線性分類的分類應用&#xff0c;同時通過OvR或者OvO的方式可以應用…

長貴對趙本山說:你需要我們家大腳,我立馬給你配雙大鞋!

長貴對趙本山說&#xff1a;你需要我們家大腳&#xff0c;我立馬給你配雙大鞋&#xff01; --小品《鄉村愛情》&#xff08;中2&#xff09;的臺詞 表演者&#xff1a;趙本山 于月仙 王小利 唐鑒軍等 &#xff08;接上&#xff09; 哈哈哈 伊拉克啊 這地方也不產這玩意吧 …

Chat GPT:AI聊天機器人的革命性突破!

一、引言 近年來&#xff0c;人工智能&#xff08;AI&#xff09;技術的發展日新月異&#xff0c;其中最具代表性的成果之一便是Chat GPT。這款基于自然語言處理&#xff08;NLP&#xff09;技術的聊天機器人&#xff0c;以其高度智能、靈活多變的特點&#xff0c;迅速吸引了全…

筆記74:在SLAM建圖過程中,為什么要使用【障礙物點云配準算法】和【里程計估算算法】結合的方法

僅使用【障礙物點云配準算法】&#xff0c;很容易導致在一條長通道中&#xff0c;因為前后兩幀的雷達點云圖過于相似&#xff0c;導致特征匹配一直完全重合&#xff0c;使得機器人建圖一直停留在原地&#xff0c;但實體機器人早就沿著通道跑向遠端了&#xff1b; 使用Hector_ma…

(學習日記)2024.03.02:UCOSIII第四節:創建任務

寫在前面&#xff1a; 由于時間的不足與學習的碎片化&#xff0c;寫博客變得有些奢侈。 但是對于記錄學習&#xff08;忘了以后能快速復習&#xff09;的渴望一天天變得強烈。 既然如此 不如以天為單位&#xff0c;以時間為順序&#xff0c;僅僅將博客當做一個知識學習的目錄&a…

js 精確計算(解決js四則運算精度缺失問題)

js的小數的運算&#xff0c;可能會得到一個不精確的結果&#xff0c;因為所有的運算都要轉換成二進制去計算&#xff0c;然而&#xff0c;二進制無法精確表示1/10。 var a 0.1 0.2; console.log(a); //打印結果&#xff1a;0.30000000000000004因此需要使用以下方法實現精確…

這是開玩笑嗎?加個工具,WPS與Excel表格變成了應用系統

表格處理數據簡單快捷&#xff0c;是個人用戶的首選。然而&#xff0c;當企業長期使用&#xff0c;成本表、客戶表、銷售表等堆積如山&#xff0c;尋找所需表格如同大海撈針&#xff0c;稍有不慎便可能導致數據丟失、混亂。即便使用WPS和Excel這樣的表格軟件&#xff0c;處理大…

代碼隨想錄算法訓練營第三十六天 | LeeCode 435. 無重疊區間 ,763.劃分字母區間 , 56. 合并區間

435. 無重疊區間 - 力扣&#xff08;LeetCode&#xff09; class Solution { private:static bool cmp(const vector<int> &a,const vector<int> &b){if(a[0]b[0]) return a[1]<b[1];return a[0]<b[0];} public:int eraseOverlapIntervals(vector&l…

C#進階高級語法之LINQ:查詢操作的便利性與效率提升

引言&#xff1a; 在C#編程中&#xff0c;LINQ&#xff08;Language-Integrated Query&#xff09;是一種強大的查詢語言&#xff0c;它被集成在.NET框架中&#xff0c;允許開發者對各種數據源進行查詢和操作。LINQ的出現&#xff0c;極大地提升了C#在數據處理方面的能力&#…

回溯難題(算法村第十八關黃金挑戰)

復原 IP 地址 93. 復原 IP 地址 - 力扣&#xff08;LeetCode&#xff09; 有效 IP 地址 正好由四個整數&#xff08;每個整數位于 0 到 255 之間組成&#xff0c;且不能含有前導 0&#xff09;&#xff0c;整數之間用 . 分隔。 例如&#xff1a;"0.1.2.201" 和 &q…

IDEA中使用git提交代碼時,有.class文件怎么避免

在IDEA中使用git提交代碼時&#xff0c;git把.class文件都給我放進來了&#xff0c;而我并不想要提交.class文件 我要提交的是.java文件 應該怎么設置呢 解決方案&#xff0c;點擊整個項目的生命周期中的clean之前&#xff0c;你會發現git提交欄的.class文件都不見了。