簡體   English   中英

部署模式客戶端中的spark-submit不讀取所有jar

[英]spark-submit in deploy mode client not reading all the jars

我正在嘗試通過spark-submit命令向我的spark集群(獨立模式)提交應用程序。 我正在關注官方的spark文檔 ,以及依賴於另一個 現在問題是我得到了奇怪的行為。 我的設置如下:

  • 我有一個目錄,其中我的應用程序的所有依賴項都位於, /home/myuser/jars
  • 我的應用程序的jar位於同一目錄( /home/myuser/jars )中,稱為dat-test.jar
  • dat-test.jar的入口點類位於包路徑my.package.path.Test
  • Spark master在spark://master:7077

現在,我直接在主節點上提交應用程序,從而使用client部署模式運行命令

./spark-submit --class my.package.path.Test --master spark://master:7077 --executor-memory 5G --total-executor-cores 10 /home/myuser/jars/*

我收到一個錯誤

java.lang.ClassNotFoundException: my.package.path.Test

如果我激活verbose模式,我看到的是選擇為包含入口點的jar的primaryResource/home/myuser/jars/的字母順序的第一個jar(不是dat-test.jar ),領先(I支持)到ClassNotFoundException 無論如何,同一目錄中的所有jar都作為參數加載。

當然,如果我跑

./spark-submit --class my.package.path.Test --master spark://master:7077 --executor-memory 5G --total-executor-cores 10 /home/myuser/jars/dat-test.jar

它找到Test類,但它找不到其他jar中包含的其他類。 最后,如果我使用--jars標志並運行

./spark-submit --class my.package.path.Test --master spark://master:7077 --executor-memory 5G --total-executor-cores 10 --jars /home/myuser/jars/* /home/myuser/jars/dat-test.jar

我獲得與第一個選項相同的結果。 /home/myuser/jars/第一個jar作為primaryResource加載,導致my.package.path.Test ClassNotFoundException 如果我添加--jars /home/myuser/jars/*.jar則相同。

重點是:

  • 出於開發原因,我不希望有一個包含所有依賴項的jar
  • /home/myuser/jars/中的/home/myuser/jars/很多。 我想知道是否有辦法將它們全部包含在內而不是使用逗號分隔語法
  • 如果我嘗試在主節點上使用--deploy-cluster運行相同的命令,我不會收到錯誤,但由於其他一些原因計算失敗(但這是另一個問題)。

那么在客戶端模式下運行spark-submit的正確方法是什么? 謝謝

沒有辦法使用--jars選項包含所有jar,你必須創建一個小腳本來枚舉它們。 這部分有點次優。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM