美文网首页
Spark - 编译、打包和开发环境搭建

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

作者: 李传亮 | 来源:发表于2021-05-14 18:28 被阅读0次

    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 - 编译、打包和开发环境搭建

          本文链接:https://www.haomeiwen.com/subject/geetbktx.html