ITPub博客

首页 > 大数据 > > 使用阿里云的Maven仓库加速Spark编译过程

使用阿里云的Maven仓库加速Spark编译过程

作者:格伯纳 时间:2020-05-12 12:20:00 0 删除 编辑

前言

在国内编译Spark项目需要从Maven源下载很多依赖包,官方源在国内大环境下的下载速度大家都懂得,那个煎熬啊,简直是浪费生命。

如果你的下载速度很快,你现在就可以无视这篇文章了。

阿里云给国内开发者提供了一个非常的良心的服务:提供了一个国内Maven镜像,可以让我们摆脱这种煎熬。

地址信息

阿里云的Maven也是基于nexus构建。

地址:maven.aliyun.com/
仓库地址:maven.aliyun.com/nexus/

Spark支持sbt及Maven两种编译方式,接下来分别介绍,如何修改构建配置,采用阿里云的maven仓库加速Spark编译过程。

提速sbt构建速度

网上有资料介绍如何使用国内镜像加速编译,比如这个:<Scala sbt 添加国内镜像>

然,对于Spark项目而言,并卵!因为Spark单独定义了项目的构建规则,并不会加载默认的仓库解析配置。

我们需要修改Spark源码下的project/SparkBuild.scala这个文件,参考我下面这个patch进行修改:

--- a/project/SparkBuild.scala
+++ b/project/SparkBuild.scala
@@ -214,7 +214,8 @@ object SparkBuild extends PomBuild {

     // Override SBT's default resolvers:
     resolvers := Seq(
-      DefaultMavenRepository,
+      //DefaultMavenRepository,
+      Resolver.url("aliyun", url("http://maven.aliyun.com/nexus/content/groups/public/")),
       Resolver.mavenLocal,
       Resolver.file("local", file(Path.userHome.absolutePath + "/.ivy2/local"))(Resolver.ivyStylePatterns)
     ),

用Resolver.url("aliyun", url("Index of /groups/public"))替换掉DefaultMavenRepository即可。

然后参照官方的方法用sbt编译Spark,你会发现,新下载的jar包会从阿里云获取,类似这样:

...
[info]     [SUCCESSFUL ] org.apache.parquet#parquet-encoding;1.8.2!parquet-encoding.jar (417ms)
[info] downloading http://maven.aliyun.com/nexus/content/groups/public/org/apache/parquet/parquet-format/2.3.1/parquet-format-2.3.1.jar ...
[info]     [SUCCESSFUL ] org.apache.parquet#parquet-format;2.3.1!parquet-format.jar (948ms)
[info] downloading http://maven.aliyun.com/nexus/content/groups/public/org/apache/parquet/parquet-jackson/1.8.2/parquet-jackson-1.8.2.jar ...
[info]     [SUCCESSFUL ] org.apache.parquet#parquet-jackson;1.8.2!parquet-jackson.jar (1419ms)
[info] downloading http://maven.aliyun.com/nexus/content/groups/public/org/apache/avro/avro/1.8.1/avro-1.8.1.jar ...
[info]     [SUCCESSFUL ] org.apache.avro#avro;1.8.1!avro.jar(bundle) (2448ms)
[info] downloading http://maven.aliyun.com/nexus/content/groups/public/org/apache/parquet/parquet-avro/1.8.2/parquet-avro-1.8.2.jar ...
...

这个下载过程,比官方的Maven源要快很多。

PS:使用sbt编译Spark子项目的方法,可以参考我的这篇文章:

提速Maven构建速度

Maven的就比较简单了,是非常通用的方法,我们仅需要修改pom.xml文件即可:

--- a/pom.xml
+++ b/pom.xml
@@ -228,7 +228,8 @@
       <id>central</id>
       <!-- This should be at top, it makes maven try the central repo first and then others and hence faster dep resolution -->
       <name>Maven Repository</name>
-      <url>https://repo1.maven.org/maven2</url>
+      <!--<url>https://repo1.maven.org/maven2</url>-->
+      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
       <releases>
         <enabled>true</enabled>
       </releases>

配置下面还有个Maven的插件,也参考这个修改掉即可。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31509949/viewspace-3132470/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
管理员

注册时间:2018-03-30

  • 博文量
    2383
  • 访问量
    984203