2021.1.24

发现有问题评论区留言~~

课堂测试1
一、环境要求
sandbox-hdp 2.6.4 或同等版本自建的 Hadoop+Hive+Spark+HBase 开发环境。
二、提交结果要求
1.必须提交源码或对应分析语句,如不提交则不得分。
2.带有分析结果的功能,请分析结果的截图与代码一同提交。
三、数据描述
这是一份来自于某在线考试系统的学员答题批改日志,日志中记录了日志生成时间,题目难度系数,题目所属的知识点 ID,做题的学生 ID,题目 ID 以及作答批改结果。日志的结构如下:
四、功能要求
1.数据准备(10 分)
请在 HDFS 中创建目录/app/data/exam,并将 answer_question.log 传到该目录。
2.在 Spark-Shell 中,加载 HDFS 文件系统 answer_question.log 文件,并使用 RDD 完成以下分析,也可使用 Spark 的其他方法完成数据分析。(20 分)
①提取日志中的知识点 ID,学生 ID,题目 ID,作答结果 4 个字段的值
②将提取后的知识点ID,学生ID,题目 ID,作答结果字段的值以文件的形式保存到HDFS的/app/data/result 目录下。一行保留一条数据,字段间以“\t”分割。文件格式如下所示。
(提示:元组可使用 tuple.productIterator.mkString("\t")组合字符串,使用其他方法处理数据只要结果正确也给分)
34434481 8195023659599 1018 0
34434425 8195023659599 7385 1
34434457 8195023659596 7346 1
34434498 8195023659597 6672 0
34434449 8195023659594 4809 1
34434489 8195023659596 7998 0.5
34434492 8195023659595 9406 0
34434485 8195023659597 8710 1
3.创建 HBase 数据表(10 分)
在 HBase 中创建命名空间(namespace)exam,在该命名空间下创建 analysis 表,使用学生 ID 作为 RowKey。
该表下有 2 个列族 accuracy、question。accuracy 列族用于保存学员答题正确率统计数据:
( 总分 accuracy:total_score , 答题的试题数 accuracy:question_count,正确率 accuracy:accuracy)
question 列族用于分类保存学员正确, 错误和半对的题目 id ( 正确 question:right , 错误 question:error , 半对question:half)
4.请在 Hive 中创建数据库 exam ,在该数据库中:
创建外部表 ex_exam_record 指向/app/data/result 下Spark 处理后的日志数据 ;
创建外部表ex_exam_anlysis 映射至HBase中的 analysis 表的 accuracy 列族;
创建外部表 ex_exam_question 映射至 HBase 中的analysis 表的 question 列族(20 分)
ex_exam_record 表结构如下:
字段名称 字段类型 字段含义
topic_id string 知识点 ID
student_id string 学生 ID
question_id string 题目 ID
score float 作答结果
ex_exam_anlysis 表结构如下:
字段名称 字段类型 字段含义
student_id string 学生 ID
total_score float 总分
question_count int 答题的试题数
accuracy float 正确率
ex_exam_question 表结构如下:
字段名称 字段类型 字段含义
student_id string 学生 ID
right string 所有作对的题目的 ID 列表
half string 所有半对的题目的 ID 列表
error string 所有做错的题目的 ID 列表
5.使用 ex_exam_record 表中的数据统计每个学员总分、答题的试题数和正确率,并保存到 ex_exam_anlysis 表中,其中正确率的计算方法如下:正确率=总分/答题的试题数(20 分)
6.使用 ex_exam_record 表中的数据统计每个作对,做错,半对的题目列表。
①题目 id 以逗号分割,并保存到 ex_exam_question 表中。(10 分)
②完成统计后,在 HBase Shell 中遍历 exam:analysis 表并只显示 question 列族中的数据, 如下图所示(10 分)


enmmmmm就是第一套试卷 此贴终结

截图 windows+shift+s

你可能感兴趣的:(笔记)