2017-02-23 34 views
0

我正在構建一個Spark 2.1.0的小型測試應用程序,作爲我的計算機上的2個工作集羣運行,並在應用程序的jar文件中打包依賴庫。如何在spark-submit應用程序的jar文件中提交庫時告訴Spark?否則,我在線程「main」java.lang.NoClassDefFoundError中收到異常。spark-submit如何指定依賴庫位於應用程序的jar內

還是應該依賴庫複製到Spark?

在此先感謝。

+0

Spark不支持MapReduce支持的「應用程序庫內庫」功能。 – vanza

回答

0

要添加外部庫在下面的目錄

添加應用程序JAR

spark.driver.extraLibraryPath spark.driver.extraClassPath
spark.executor.extraClassPath
spark.executor.extraLibraryPath

你可以找到/etc/spark/conf.dist/spark-defaults.conf文件上面的目錄路徑

+0

因此,火花本身並不是看着罐子裏面? –

+0

您需要檢查如何打包應用程序jar。我假設你正在使用maven或sbt來構建你的jar。構建和打包成功完成? – Vikrame

+0

我正在使用IntelliJ IDEA。我有什麼特別的東西在罐子裏?所有的庫都在jar的根部。 –

0

更簡單的方法是構建一個超級jar - 在你的jar中你所有的pom依賴將被添加到你的jar中。

另外,最好的辦法是 -

  1. 就集羣的classpath中可用的火花特定的罐子(在 POM使他們所提供的範圍)
  2. 任何第三方庫可以使用 添加「 --jars /fullpath/your.jar「用於火花提交或由 spark.driver.extraLibraryPath,spark.driver.extraClassPath, spark.executor.extraClassPath,spark.executor.extraLibraryPath爲 如上所述。
+0

我用所有依賴構建jur,但spark沒有在負載上找到這些。 –

相關問題