多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

从零完成 Hive 学生成绩分析:使用华为云码道 Agent 快速生成 SQL 与数据统计项目

从零完成 Hive 学生成绩分析:使用华为云码道 Agent 快速生成 SQL 与数据统计项目 从零完成 Hive 学生成绩分析使用华为云码道 Agent 快速生成 SQL 与数据统计项目hive-score-analysis-demo:基于 Apache Hive 的学生成绩数据分析项目 - AtomGit深圳技术大学 - 开源代码托管,代码协作 - AtomGit在学习大数据技术时Hive 是一个比较常见的数据分析工具。它支持通过类似 SQL 的查询语言处理数据能够完成数据聚合、分组统计以及条件分析等任务。这次我准备通过一个简单的学生成绩统计实验熟悉 Hive 的基础操作。为了减少重复编写代码和整理项目文件的时间我使用华为云码道 Agent 辅助完成项目开发从准备 CSV 数据到生成 HiveQL再到统计结果验证体验通过自然语言完成数据分析项目的开发过程。整个项目规模不大但包含了数据准备、建表、数据导入、聚合统计、条件分类和结果验证等几个关键环节。一、项目准备从一个简单的统计需求开始这次项目的目标很明确使用 Hive 对一份学生成绩数据进行统计分析。项目名称为hive-score-analysis-demo主要实现以下功能统计学生总人数、平均成绩、最高成绩和最低成绩。根据 60 分及格标准计算及格人数和及格率。使用 CASE WHEN 对成绩进行等级划分。根据专业分组统计不同专业的平均成绩。实验数据采用 CSV 格式共包含 12 条学生记录。每条记录包含学号、姓名、专业和成绩四个字段分别对应student_id、name、major和score。考虑到这次主要是学习 HiveQL 的基础语法数据规模不需要太大。使用少量记录反而更容易验证统计结果也方便理解每条 SQL 的执行逻辑。二、创建仓库并使用码道 Agent 开发首先在华为云码道平台创建一个新项目。项目名称hive-score-analysis-demo项目介绍说明主要功能并设置为公开项目方便后续保存代码和分享实验结果。创建完成后进入对应的开发环境打开码道 Agent。与传统的逐个创建文件不同这次我直接将整个实验需求提交给 Agent包括数据格式、Hive 建表方式、统计指标以及项目目录结构。例如在提示词中明确提出“请创建一个 Hive 学生成绩统计项目使用 CSV 文件保存测试数据编写 HiveQL 实现平均分、最高分、最低分、及格率和成绩等级分布统计并生成对应的项目说明文档。”同时我还要求生成一个轻量级 Python 验证脚本在没有安装 Hive 的情况下也可以快速检查数据和统计逻辑是否正确。这样项目既保留了 HiveQL 的主要实现也能够在普通开发环境中完成基础结果验证。【图片1华为云码道 Agent 接收开发提示词的界面】三、生成项目目录和测试数据根据开发需求项目采用以下目录结构hive-score-analysis-demo/ ├── data/ │ └── student_scores.csv ├── sql/ │ ├── create_table.sql │ └── analysis.sql ├── scripts/ │ └── verify_results.py ├── README.md └── .gitignore其中data目录用于保存成绩数据sql目录保存 HiveQL 代码scripts目录保存结果验证脚本。将数据文件、SQL 文件和验证工具分别管理可以避免把所有内容混在一起也方便后续添加新的分析任务。本次 CSV 数据格式如下1001,张三,人工智能,86 1002,李四,人工智能,73 1003,王五,人工智能,91 1004,赵六,人工智能,58 1005,陈晨,软件工程,82 1006,刘洋,软件工程,67 1007,周宁,软件工程,95 1008,吴桐,软件工程,76 1009,孙悦,数据科学,88 1010,郑凯,数据科学,61 1011,何雨,数据科学,54 1012,林安,数据科学,79数据包含人工智能、软件工程和数据科学三个专业每个专业均有四名学生。为了让 Hive 按照预期格式读取数据CSV 文件不设置表头每一行直接对应一条学生记录。【图片2码道生成的项目目录及 student_scores.csv 数据文件】四、通过 HiveQL 完成数据建表准备好数据之后下一步是创建 Hive 数据表。项目中的create_table.sql保存建表和数据导入语句。核心建表代码如下DROP TABLE IF EXISTS student_scores; CREATE TABLE student_scores ( student_id INT, name STRING, major STRING, score INT ) ROW FORMAT DELIMITED FIELDS TERMINATED BY , STORED AS TEXTFILE;这段 SQL 主要完成三个操作。首先通过DROP TABLE IF EXISTS删除已经存在的同名表方便重新执行实验。然后使用CREATE TABLE定义学生成绩表的字段结构。最后通过FIELDS TERMINATED BY ,指定字段分隔符为英文逗号并使用TEXTFILE作为存储格式。由于原始数据采用 CSV 格式这种建表方式比较直观也适合基础实验使用。建表完成后可以通过LOAD DATA LOCAL INPATH导入数据。例如LOAD DATA LOCAL INPATH /实际路径/student_scores.csv OVERWRITE INTO TABLE student_scores;其中的数据路径需要根据 Hive 客户端所在机器的实际文件位置修改。在这个过程中码道 Agent 主要帮助我完成了建表语句和数据导入语句的编写让整个数据准备过程更加清晰。五、编写 HiveQL 实现成绩统计完成建表后就可以使用 HiveQL 进行数据分析。首先统计学生人数、平均成绩、最高成绩和最低成绩SELECT COUNT(*) AS total_students, ROUND(AVG(score), 2) AS avg_score, MAX(score) AS max_score, MIN(score) AS min_score FROM student_scores;这段代码使用了四个常见的聚合函数。COUNT(*)用于统计学生人数AVG(score)用于计算平均成绩MAX(score)和MIN(score)分别获取最高成绩与最低成绩。根据这次准备的测试数据预期统计结果为学生总人数12 人平均成绩75.83 分最高成绩95 分最低成绩54 分接下来继续计算及格人数和及格率SELECT SUM( CASE WHEN score 60 THEN 1 ELSE 0 END ) AS pass_count, ROUND( SUM( CASE WHEN score 60 THEN 1 ELSE 0 END ) * 100.0 / COUNT(*), 2 ) AS pass_rate FROM student_scores;这里通过CASE WHEN判断成绩是否达到 60 分。如果达到及格标准则返回 1否则返回 0。再通过SUM对所有结果求和就能够得到及格人数。根据原始数据12 名学生中有 10 人及格因此及格率为 83.33%。相比逐条判断成绩这种写法能够直接在 SQL 查询中完成条件统计。六、使用 CASE WHEN 完成成绩等级划分除了基础统计我还让码道 Agent 添加了成绩等级分析功能。具体划分规则如下90 分及以上为优秀80 分至不满 90 分为良好60 分至不满 80 分为及格低于 60 分为不及格。使用 HiveQL 可以通过CASE WHEN实现SELECT CASE WHEN score 90 THEN 优秀 WHEN score 80 THEN 良好 WHEN score 60 THEN 及格 ELSE 不及格 END AS grade_level, COUNT(*) AS student_count FROM student_scores GROUP BY CASE WHEN score 90 THEN 优秀 WHEN score 80 THEN 良好 WHEN score 60 THEN 及格 ELSE 不及格 END;执行这类查询时首先根据成绩判断等级然后通过GROUP BY将相同等级的数据归为一组最后使用COUNT(*)统计各组人数。本次实验数据对应的等级分布为优秀 2 人、良好 3 人、及格 5 人、不及格 2 人。这也是本次实验中比较重要的一部分因为它同时使用了条件判断、数据分组以及聚合统计三种操作。七、按专业统计平均成绩在完成整体成绩分析之后我又增加了一项按专业分组统计的功能。对应的 HiveQL 如下SELECT major, COUNT(*) AS student_count, ROUND(AVG(score), 2) AS avg_score FROM student_scores GROUP BY major;与之前的统计方式相比这段代码增加了GROUP BY major让 Hive 可以分别计算每个专业的人数和平均成绩。根据实验数据人工智能专业共有 4 人平均成绩为 77.00 分。软件工程专业共有 4 人平均成绩为 80.00 分。数据科学专业共有 4 人平均成绩为 70.50 分。虽然只有 12 条记录但通过这个例子已经能够理解 Hive 分组查询的基本用法。在实际数据分析任务中同样的思路也可以用于统计不同班级、不同年级或者不同课程的数据。【图片3华为云码道中 analysis.sql 的主要统计代码】八、运行验证与结果检查编写完成 SQL 后还需要确认统计结果是否正确。考虑到 Hive 的运行通常依赖相应的大数据环境而本次项目的数据规模较小我让码道 Agent 额外生成了一个 Python 快速验证脚本。这个脚本使用 Python 标准库读取 CSV 文件并通过内存 SQLite 数据库执行对应的统计查询。它不需要额外安装第三方 Python 依赖可以用来快速检查数据是否正确、聚合逻辑是否符合预期。在开发环境终端中输入python scripts/verify_results.py如果环境使用python3命令也可以执行python3 scripts/verify_results.py根据实验数据验证脚本应得到以下结果学生总人数12 平均成绩75.83 最高成绩95 最低成绩54 及格人数10 及格率83.33% 成绩等级分布 优秀2 良好3 及格5 不及格2 各专业平均成绩 人工智能77.00 软件工程80.00 数据科学70.50通过对比预期结果可以检查数据处理逻辑是否符合要求。需要注意的是Python 验证脚本主要用于快速检查统计结果并不等同于在 Hive 引擎中执行 HiveQL。项目仍然保留了完整的 Hive 建表和查询文件可以在具备 Hive 环境时直接开展后续实验。【图片4码道开发环境终端执行验证脚本后的实际输出结果】九、使用华为云码道开发的体会通过这次实验我对华为云码道辅助数据分析开发的方式有了更直观的认识。过去完成类似的 Hive 基础实验通常需要先准备数据文件再手动编写建表语句、数据导入语句和统计查询。如果还要整理 README 文档和检查统计结果整个过程会涉及不少重复性工作。这次使用码道 Agent我可以先描述具体的数据处理目标让 AI 协助完成项目目录设计、SQL 代码生成、测试数据准备和验证脚本编写。对于初学者来说这种方式能够减少项目初始化的时间也有助于把精力放在 SQL 语句本身。例如通过阅读 Agent 生成的代码可以进一步理解COUNT、AVG、SUM、CASE WHEN和GROUP BY在不同统计任务中的应用。同时AI 生成的代码仍然需要结合真实数据和实际环境进行验证。特别是数据文件路径、Hive 运行方式和查询结果只有经过实际检查才能确认项目是否达到预期目标。这次完成的学生成绩统计项目虽然简单但已经覆盖了从原始数据准备到统计逻辑验证的主要步骤。对于学习 Hive 的开发者来说完全可以从这样一个小项目开始再逐步扩展到更大规模的数据分析任务。十、总结本次通过华为云码道 Agent 辅助开发了一个基于 HiveQL 的学生成绩统计分析项目实现了学生人数统计、平均分计算、及格率分析、成绩等级划分和专业分组统计等功能。整个过程让我感受到AI 编程助手不仅能够生成单段代码也可以围绕一个完整的开发目标协助创建项目文件、组织 SQL、准备测试数据和编写验证工具。对于 Hive 这类以数据处理为核心的技术使用码道 Agent 可以让基础实验的开发过程更加高效也方便后续继续学习和扩展。项目仓库hive-score-analysis-demo下一篇将继续围绕大数据分析展开使用华为云码道辅助完成 Spark DataFrame 数据处理实验进一步了解不同数据分析工具的开发方式。
返回列表