2

我一直在嘗試使用spark-shell的spark。我所有的數據都是在sql中。spark jobserver錯誤classnotfoundexception

I used to include external jars using the --jars flag like /bin/spark-shell --jars /path/to/mysql-connector-java-5.1.23-bin.jar --master spark://sparkmaster.com:7077 

    I have included it in class path by changing the bin/compute-classpath.sh file 
    I was running succesfully with this config. 

現在,當我通過jobserver運行一個獨立的工作。我收到以下錯誤消息

result: { 
    "message" : "com.mysql.jdbc.Driver" 
    "errorClass" : "java.lang.classNotFoundException" 
    "stack" :[.......] 
} 

我已經將jar文件包含在我的local.conf文件中,如下所示。 上下文設置{ ..... 從屬JAR-URI的= [ 「文件:///絕對/路徑/到/與/ jar文件」] ...... }

回答

0

您您的工作人員可能沒有/path/to/mysql-connector-java-5.1.23-bin.jar
您可以將所需的依賴項複製到所有火花工作者或 Bundle the submitting jar with required dependencies
我使用maven來構建jar。依賴項的範圍必須是運行時。

2

您的所有依賴關係應該包含​​在您的spark-jobserver應用程序JAR中(例如,創建一個「超級jar」),或者包含在Spark執行程序的類路徑中。我建議配置類路徑,因爲速度更快,所需磁盤空間更少,因爲無論何時運行應用程序,都不需要將第三方庫依賴關係複製到每個工作者。

下面是對星火1.3.1配置工作(執行)的classpath步驟:

  1. 複製第三方JAR(縣)每個星火工人和火花主
  2. 放置在同一目錄下JAR(S)每臺主機上(例如/家庭/ EC2用戶/ lib目錄
  3. 以下行添加到星火/root/spark/conf/spark-defaults.conf文件在Spark主:

    spark.executor.extraClassPath /root/ephemeral-hdfs/conf:/home/ec2-user/lib/name-of-your-jar-file.jar

    下面是我自己修改使用斯坦福NLP庫的例子:

    spark.executor.extraClassPath /root/ephemeral-hdfs/conf:/home/ec2-user/lib/stanford-corenlp-3.4.1.jar:/home/ec2-user/lib/stanford-corenlp-3.4.1-models.jar

0

curl --data-binary @/PATH/jobs_jar_2.10-1.0.jar 192.168.0.115:8090/jars/job_to_be_registered

對於張貼相關性JAR

curl -d "" 'http://192.168.0.115:8090/contexts/new_context?dependent-jar-uris=file:///path/dependent.jar'

該作品爲j觀察員1.6.1