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.mzph.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文件都不见了。