使用阿里雲的Maven倉庫加速Spark編譯過程


前言

在國內編譯Spark項目需要從Maven源下載很多依賴包,官方源在國內大環境下的下載速度大家都懂得,那個煎熬啊,簡直是浪費生命。

如果你的下載速度很快,你現在就可以無視這篇文章了。

阿里雲給國內開發者提供了一個非常的良心的服務:提供了一個國內Maven鏡像,可以讓我們拜托這種煎熬。

地址信息

阿里雲的Maven也是基於nexus構建。

地址:http://maven.aliyun.com/
倉庫地址:http://maven.aliyun.com/nexus/content/groups/public/

Spark支持sbt及Maven兩種編譯方式,接下來分別介紹,如何修改構建配置,采用阿里雲的maven倉庫加速Spark編譯過程。

提速sbt構建速度

網上有資料介紹如何使用國內鏡像加速編譯,比如這個:http://blog.csdn.net/mmical/article/details/41925823

然,對於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("http://maven.aliyun.com/nexus/content/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的插件,也參考這個修改掉即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM