我有一個獨立的節點集羣中運行DataStax企業4.8星火1.4.1,而我提出在集羣模式下我的應用程序是這樣的:驅動程序類路徑 - ClassNotFoundException的
dse spark-submit \
--class MyApp \
--master spark://MY-IP:6066 \
--deploy-mode cluster \
--packages LIST-OF-MY-DEPENDECIES \
MyApp.jar
這似乎爲它工作應該。它將所有傳遞依賴的JAR下載到本地Maven並啓動我的應用程序,但是這些JAR不在類路徑中。
object MyApp {
def main(args: Array[String]): Unit = {
// This fails with: ClassNotFoundException
getClass.getClassLoader.loadClass("akka.cluster.Cluster$")
}
}
我發現了類加載器(org.apache.spark.util.MutableURLClassLoader
)及其父母包括由位於/usr/share/dse
下DataStax只提供標準靜態JAR文件,但沒有我的依賴。
另一個發現是,名爲spark.jars
的Spark配置屬性(以及系統屬性)包含這些JAR的列表。這些應該如何到達classpath?
注意:我使用了第二種方法,所以讓我知道是否有問題,我可以仔細看看。 – marios
Uber jar由於資源文件衝突而導致問題 - 覆蓋reference.conf並且變得相當大(100 + MB)。 SparkContext.addjar不能解決我的問題。主要方法的第一行需要類路徑上的JAR。但你的建議只是一種解決方法。我想知道爲什麼我的方法不起作用。謝謝 –