
410
|
第九章:在 Spark 上使用深度學習與 DL4J
控制 JAR 檔案的大小
一股腦把執行平台已有的依賴關係全都包含進來,就是創建出過大 job JAR 檔
案其中最大的罪魁禍首。只要能夠排除掉重複的部分,有時甚至可以把 jar 檔
案的大小縮減 50%到 80%,從而使得 job 的編譯、移動與執行變得更加容易。
我們可以使用如下的
<scope>
標籤,來控制 jar 要包含哪些依賴關係:
<scope>provided</scope>
下面就是以這種方式設定依賴關係範圍的範例:
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-common</artifactId>
<version>${hadoop.version}</version>
<scope>provided</scope>
</dependency>
序列化
Spark 在預設的情況下還是會使用 Java 序列化(serialization),但這通
常被認為是一個壞主意。在範例 9-1 中,我們可藉由把 Kryo 依賴關係包
含進來的方式,來緩解這個問題,做法如下:
<dependency>
<groupId>org.nd4j</groupId>
<artifactId>nd4j-kryo_${scala.binary.version}</artifactId>
<version>${nd4j.version}</version> ...