网站首页
手机版

2023国赛中职组大数据应用与服务赛项题库参考答案陆续更新

更新时间:2024-06-10 21:19作者:小乐

题号:试题01 模块2:数据采集与处理(一) 任务1:数据采集与清洗1、子任务1:数据采集

启动Hadoop集群,使用HDFS Shell命令在HDFS根目录下级联创建名为/behavior/origin_log的目录,用于存储收集的用户行为日志;答案:hadoop fs -mkdir -p /behavior/origin_log

目录创建完成。使用HDFS Shell命令将本地/root/eduhq/data/app_log/behavior目录下的所有用户行为日志文件收集到HDFS /behavior/origin_log目录下;答案:hadoop fs -put /root/eduhq /data/app_log/behavior/* /behavior/origin_log

采集完成后,在本机打开浏览器,访问http://本地主机名:9870或http://本地IP地址:9870进入HDFS WebUI界面,查看数据是否已成功采集到HDFS。答:使用浏览器访问即可。

2. 子任务2:数据清理

在Windows操作系统上使用Excel软件打开名为“behavior2023-01-01.csv”的文件;

清理数据并关注名为“behavior2023-01-01.csv”的文件中的“时间”列。将时间和日期格式分为两列:日期和时间。回答:

(2)任务二:数据标注开发:开发一个简单的Java类IpToLocUdf,继承

org.apache.hadoop.hive.ql.udf.generic.GenericUDF,重载了initialize()、evaluate()和getDisplayString()方法;该类需要通过IP实现从/root/eduhq/data/area.json文件中随机获取“省”和“城市”信息,完成数据的分类和标注。

答案:导入org.apache.hadoop.hive.ql.exec.UDFArgumentException;

导入org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException;

导入org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException;

导入org.apache.hadoop.hive.ql.metadata.HiveException;

导入org.apache.hadoop.hive.ql.udf.generic.GenericUDF;

导入org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;

导入org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;

导入org.apache.hadoop.hive.serde2.objectinspector.primitive.StringObjectInspector;

导入org.codehaus.jackson.JsonNode;

导入org.codehaus.jackson.map.ObjectMapper;

导入org.codehaus.jackson.node.ObjectNode;

导入java.io.File;

导入java.io.IOException;

导入java.util.ArrayList;

导入java.util.List;

公共类IpToLocUdf 扩展GenericUDF {

私有StringObjectInspector stringInspector;

私有ObjectInspector 输出OI;

//初始化函数,用于设置函数参数和输出类型

/*

该初始化方法的主要作用是验证输入参数的数量和类型,并将输出类型设置为字符串。

如果输入的参数不符合要求,则会抛出异常。

最后,它返回一个输出类型的ObjectInspector 供其他方法使用。

*/

@覆盖

公共ObjectInspector 初始化(ObjectInspector []参数)抛出UDFArgumentException {

//检查参数个数是否为1,如果不是则抛出异常

if (arguments.length !=1) {

抛出新的UDFArgumentLengthException(

'函数iptoloc(ip) 只接受1 个参数。');

}

//检查第一个参数是否为StringObjectInspector类型,如果不是则抛出异常

if (!(arguments[0] StringObjectInspector 实例)) {

抛出新的UDFArgumentTypeException(0,

'参数必须是字符串,但是' + argument[0].getTypeName()

+ '已给出。');

}

//将第一个参数设置为字符串类型的ObjectInspector

this.stringInspector=(StringObjectInspector) 参数[0];

//设置输出类型为string,并通过反射创建ObjectInspector实例

this.outputOI=ObjectInspectorFactory.getReflectionObjectInspector(String.class,

ObjectInspectorFactory.ObjectInspectorOptions.JAVA);

//打印输出类型的ObjectInspector信息

System.out.println(outputOI);

返回输出OI; //返回输出类型的ObjectInspector以供其他方法使用

}

@覆盖

公共对象评估(DeferredObject []参数)抛出HiveException {

//获取传入的IP地址参数

String ip=stringInspector.getPrimitiveJavaObject(arguments[0].get());

//从指定文件中读取区域信息

//文件file=new File('/root/eduhq/data/area.json');

文件file=new File('/resources/area.json');

ObjectMapper 映射器=new ObjectMapper();

列出省份=new ArrayList();

列出城市=new ArrayList();

尝试{

//解析JSON文件

JsonNode rootNode=mapper.readTree(file);

//遍历JSON节点获取省市信息

for (JsonNode 节点: rootNode) {

String Province=node.path('province').getTextValue();

String city=node.path('city').getTextValue();

省份.add(省份);

城市.add(城市);

}

} catch (IOException e) {

throw new HiveException('无法读取area.json file:' + e.getMessage(), e);

}

//根据IP地址进行分类和标签

int 索引=ipToIndex(ip);

字符串省份=Provinces.get(index);

字符串城市=城市.get(索引);

//返回分类标注结果

ObjectNode结果=mapper.createObjectNode();

result.put('省份', 省份);

结果.put('城市', 城市);

返回结果.toString();

}

@覆盖

公共字符串getDisplayString(String[] 儿童) {

返回'iptoloc(' + Children[0] + ')';

}

私有int ipToIndex(字符串ip) {

//根据IP地址的某种算法得到索引值

//这里我们简单的使用IP地址的字符长度模拟算法

返回ip.length() % 7;

}

}

org.apache.hive

hive 执行程序

3.1.2

(三)任务三:数据统计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,并与开发的类关联起来;

答案:添加jar /root/eduhq/udf_jars/hive-udf-behavior-1.0.0.jar

创建函数url_trans 作为com.hive.udf.url_trans;

创建函数get_city_by_ip 为com.hive.udf.get_city_by_ip;

(4)在Hive客户端上,使用select语句测试url_trans和get_city_by_ip函数;

答:根据具体功能使用。例如:

选择get_city_by_ip(ip);

(5)启动Hive的动态分区功能,并将Hive设置为非严格模式;

答案:设置hive.exec.dynamic.partition=true;

设置hive.exec.dynamic.partition.mode=nostrict;

(6)使用insert overwrite . select .子句将ods_behavior_log表中的数据插入到分区表dwd_behavior_log中,实现基于dt的动态分区。

答案:插入覆盖表dwd_behavior_log PARTITION (dt) select *,date_format(dt,'yyyy-MM-dd') from ods_behavior_log;

2. 子任务2:数据统计

查看dwd_behavior_log表所有现有分区;答案:显示分区dwd_behavior_log;

检查外部表dwd_behavior_log前3行数据,验证URL协议是否统一为“http”,是否可以通过IP获取“省”和“城市”信息;答案:SELECT * FROM dwd_behavior_log LIMIT 3;

从dwd_behavior_log 中选择URL,其中URL 类似于“http://%”;

返回以“http://”开头的所有URL。如果返回的行数大于0,则说明URL协议统一为“http”。

通过ip获取省份,例如: select get_city_by_ip(ip);

统计外部表dwd_behavior_log中数据的总行数。答案:从dwd_behavior_log 中选择COUNT(*);

获取更多资讯,请联系

武汉微众智能创新科技有限公司

了解更多信息请登录www.whwzzc.com,咨询电话13037102709

*本资料中的产品图片和技术数据仅供参考,如有更新,恕不另行通知。具体内容解释权归微众所有。

为您推荐

GRE考试多少分才算高分?GRE如何准备才能拿高分?

申请欧美国家高校的研究生,需要很多材料,比如本科GPA、推荐信、研究报告和论文等。而GRE考试成绩也一直被当做美国研究生录取的硬性标准之一。那么GRE考试多少分才算高分呢?GRE如何准备才能拿高分?下面武汉雷哥GRE小伊就给大家介绍一下。G

2024-06-10 21:19

GRE考试须知|GRE写作题库哪里找?(gre作文考试题库)

上周R妹提到GRE考试各个板块的题库,但是独独没有详细的说GRE写作两种文章的版块,那么这次就来详细的说一说GRE写作issue和argument的文章在哪里找呢?其实GRE写作的题库,全都在ETS官网就能找到,可能ETS官网提供的信息太多

2024-06-10 21:18

五个 SQL 查询性能测试题,只有 40% 及格率,你敢来挑战吗?| 原力计划

作者 | 董旭阳TonyDong,CSDN 博客专家责编 | 唐小引头图 | CSDN 下载自东方 IC出品 | CSDN 博客下面是 5 个关于索引和 SQL 查询性能的测试题;其中 4 个题目都是答案二选一,1 个题目是三选一。只要答对

2024-06-10 21:18

民国著名大学入学考试真题?!

最近翻阅了几本民国时期的高考辅导书,发现民国时期各家大学的入学考试题目各有特色。下面摘录文科科目的部分大题目,分享给大家。一、民国历年国文作文题目清华大学:1、我的国文老师2、夏日的昆虫3、读史书所见4、我的衣服5、苦热6、晓行7、灯8、路

2024-06-10 21:17

《英语》选择题、填空题、作文万能句子(赶紧背)(关于英语选择题做法的技巧)

一、选择题解题技巧 做单项选择题时要注意以下几个方面:1、先易后难:一些考题的答案比较容易选定,可以先从这些考题入手。平时练习时,应以基础为主,主要精力不应放在偏题、怪题上。2、分析考察意图、运用相关知识:学会分析出题者考察的意图,明确相关

2024-06-10 21:17

何兆熊综合教程1第2版练习真题和答案(何兆熊综合英语教程pdf)

关注我!Unit 1一、词汇短语Text I1confront [kEn5frQnt] v. a) force to deal with or accept the truth of; bring face to face with使对峙,

2024-06-10 21:16

加载中...