前言
在國內編譯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的插件,也參考這個修改掉即可。