2017-06-10 35 views
0

我已經在編譯時與2個模塊無關的Spark Scala 1.6.1_2.10項目。第一個模塊正在啓動一個火花驅動程序應用程序。 在第一個模塊中,我嘗試使用反射class.forName(「second.module.function.MapOperation」)加載一個類Apache Spark 1.6.1中的Class.forName地圖

我的spark-submit同時有兩個罐子對於模塊一作爲主要和其他在 - 選項。

這段代碼在intellij的本地運行良好。 由於集羣上的ClassNotFound second.module.function.MapOperation而導致此失敗 如果我測試相同的類,則在ClassNotFound的功能測試用例中也失敗。

我有一個類加載器的問題,並在spark工作/操作中使用Class.forName?

+0

可能的原因是集羣中缺少jar。 ...看看我的[answer](https://stackoverflow.com/a/43720970/647053) –

+0

沒有任何問題,直接調用(沒有反射)沒有其餘的類被調用。 – RockSolid

+0

你可以檢查像這樣的內部映射方法'val cl = ClassLoader.getSystemClassLoader cl.asInstanceOf [java.net.URLClassLoader] .getURLs.foreach(println) '它會告訴你的jar是否存在 –

回答

0

您需要將罐子放在hdfs中並提供該路徑來提交火花。

這樣所有的spark過程都可以訪問這個類。