3.0 KiB
3.0 KiB
AGENTS.md
spark_project — Spark(Scala + Java 双实现)学习项目,含三套分层练习与 MySQL 写入示例表。
Setup commands
- 拉依赖:
mvn -DskipTests dependency:resolve - 编译:
mvn compile(同时编译src/main/java与src/main/scala) - 打包:
mvn package(产出target/spark_project-1.0-SNAPSHOT-jar-with-dependencies.jar) - 跑测试:
mvn test(当前src/test/为空,等价空跑) - 清理:
mvn clean - 单文件运行入口:IDE 里把目标
object ExercisesX/class Xxx作为main直接 run,或:java -cp target/spark_project-1.0-SNAPSHOT-jar-with-dependencies.jar org.example.App
Project layout
pom.xml— Maven 配置,启用scala-maven-plugin与maven-assembly-plugin,强制 JDK 8 / Scala 2.11src/main/java/org/example/core/— Java 版 4 个核心 Demo(GroupByKeyDemo/MyPartitioner/RddCreateDemo/RepartitionVsCoalesce)src/main/scala/org/example/App.scala— Scala 入口(local[2]模式跑word.txtWordCount)src/main/scala/org/example/core/— 与 Java 同名的 Scala 版 4 个 Demosrc/main/scala/org/exercises/exercises1/exercises/— 第 1 课练习(Spark 入门)src/main/scala/org/exercises/exercises2/exercises/— 第 2 课练习(RDD 算子:map / filter / flatMap / reduce / foreach)src/main/scala/org/exercises/exercises3/exercises/— 第 3 课练习(PairRDD / reduceByKey / WordCount)src/main/scala/org/exercises/exercisesN/demo/— 上述练习对应的演示实现src/main/resources/—log4j.properties/word.txt/ MySQL 建表 SQLcreate_table.sqlsrc/test/java/— 测试目录(JUnit 3.8.1 已声明但当前为空)
Code style
- Java 8(
maven.compiler.source/target=8)与 Scala 2.11.12 共存;新文件优先 Scala,统一参考现有 demo 的写法 - Spark Master 全部固定为
local/local[2],本机调试无需集群 - 中文注释和中文 commit message 是项目常态(参考最近 6 个 commit),不要切换成英文
Testing instructions
- 当前
src/test/没有任何用例,跑测试等价于空跑 - 加测试用
src/test/java/,包路径跟随被测包(org.example/org.exercises.xxx),JUnit 3.8.1(继承TestCase,方法名testXxx) - 所有测试通过后再提 PR
PR & commit conventions
- 默认分支:
main,从main拉 feature 分支,禁止直接 push 到main - Commit 风格:参考现有
feat:ChatGPT 第 X 课:主题形式,保持简体中文 + 一句话主题 - 单节课 / 单道练习的提交保持原子;本仓库暂无 CI(
.github/workflows/未配置),提 PR 前请本地跑通mvn test
Security
.gitignore已忽略target/、.idea/、*.iml、.classpath等构建 / IDE 产物- MySQL / Hadoop 凭据不要写进
src/main/resources/,需要外部化(环境变量或*.local.properties,并加入.gitignore) - 不要把含个人 token 的 fat jar 提交到仓库