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