2015-04-06 40 views
0

我在Breeze庫中添加了一些方法,我可以通過IDE查看這些方法。我試圖將我自己構建的Breeze庫添加到基於Apache Spark的項目中。但是,當我通過命令「sbt assembly」打包我的項目並在我的集羣上運行它時,它會拋出一個錯誤「no such method xxx」,這意味着集羣實際上並未運行我的Breeze庫。那麼有誰能告訴我如何讓集羣運行由我自己構建的Breeze庫嗎?如何將我自己構建的Breeze添加到Apache Spark?

回答

0

我有一個猜測,火花使用Breeze庫本身的一些版本,並偏愛他們在你自定義裝配.jars。您可以嘗試使用自定義庫建立火花。在你的本地maven倉庫中安裝你的庫,在apache spark的pom.xml中指定它並構建你自己的spark版本。

+1

我已經建立微風並將其發佈到.m2存儲庫並通過maven命令「mvn package」構建spark。之後,我用我剛創建的同名jar文件替換了我的集羣上Spark的lib文件夾中的spark-assembly-1.3.0-hadoop1.0.4.jar。我也把這個jar放到我的項目的lib文件夾中,並通過命令「sbt assembly」打包我的項目。當我將項目提交給羣集時,它會拋出如下錯誤: 執行程序sr476上階段0.0(TID 449)中的任務126.2丟失:java.lang.NoClassDefFoundError(無法初始化類breeze.linalg.DenseVector $)[duplicate 200] – Mark 2015-04-10 13:56:47

+0

您正在獲取'java.lang.NoClassDefFoundError'而不是'java.lang.ClassNotFoundException'。這意味着有這樣的類,但它包含初始化中的一些錯誤(可能從您的自定義代碼傳播或由於某些不兼容)。不幸的是,我不能說更多關於此:( – ipoteka 2015-04-10 15:55:09

+0

謝謝。我剛剛發現我使用錯誤的scala版本2.11.x而不是2.10.4,這會導致錯誤。問題解決!非常感謝! – Mark 2015-04-11 06:23:32

相關問題