Spark - 编译、打包和开发环境搭建

1. 编译打包

Spark 支持 SBT 和 Maven 两种方式,一般构建使用 maven,开发中调试使用交互式的 SBT

SBT

执行 build/sbt 时,会先下载 sbt, scala 相关的包,修改 sbt-launch-0.13.18.jar sbt/sbt.boot.properties 中的 repositories 为国内云镜像可以加快进程,之后会进入一个较长时间的整个项目的 build。

[repositories]
  local
  huaweicloud-maven: https://repo.huaweicloud.com/repository/maven/
  local-preloaded-ivy: file:///${sbt.preloaded-${sbt.global.base-${user.home}/.sbt}/preloaded/}, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]
  local-preloaded: file:///${sbt.preloaded-${sbt.global.base-${user.home}/.sbt}/preloaded/}
  #maven-central
  typesafe-ivy-releases: https://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
  sbt-ivy-snapshots: https://repo.scala-sbt.org/scalasbt/ivy-snapshots/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly

对于习惯 Java 的程序员来说,初次接触 Scala 会遭遇不知道代码如何调试的问题,结合 Idea 和 SBT 命令行可以调试代码,详情可以参照 https://spark.apache.org/developer-tools.html

image

> build/sbt -Phive -Phive-thriftserver
> projects # 可以展示项目中所有的 sbt project
> project hive-thriftserver # 选择需要 debug 的 sub module
> set javaOptions in Test += "-agentlib:jdwp=transport=dt_socket,server=n,suspend=n,address=localhost:5005"
> testOnly *SparkContextSuite -- -t "Only one SparkContext may be active at a time" 

Maven

使用 maven 构建项目更快,构建 distribution 包

./dev/make-distribution.sh --name custom-spark --tgz -Phadoop-3.2 -Phive-thriftserver -Pkubernetes

构建所需要的模块

build/mvn clean package -DskipTests -Phadoop-3.2 -Phive-thriftserver -Pkubernetes

只构建某个模块

build/mvn -pl :spark-hive-thriftserver_2.12 package -DskipTests

2. Docker 镜像

每次重新 build 后,需要替换 assembly/target/scala-2.12/jars 中有过更新的 jar,因为在生成镜像的过程中会执行 cp -r assembly/target/scala-2.12/jars /opt/apps/trunk/qtt-spark-3.0/target/tmp/docker/base/jars

bin/docker-image-tool.sh -r registry.myrepo.com/my-namespace -t 3.0.1-1.0 build

你可能感兴趣的:(Spark - 编译、打包和开发环境搭建)