2

我一直在使用 spark-shell 尝试火花。我所有的数据都在sql中。

  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-uris = ["file:///absolute/path/to/the/jarfile"] ...... }

4

3 回答 3

2

您的所有依赖项都应该包含在您的spark-jobserver应用程序 JAR 中(例如创建一个“uber-jar”),或者包含在 Spark 执行器的类路径中。我建议配置类路径,因为它更快并且需要更少的磁盘空间,因为在您的应用程序运行时不需要将第三方库依赖项复制到每个工作程序。

以下是在 Spark 1.3.1 上配置工作程序(执行程序)类路径的步骤:

  1. 将第三方 JAR 复制到您的每个 Spark 工作人员和 Spark 主服务器
  2. 将 JAR 放在每个主机上的同一目录中(例如 /home/ec2-user/lib
  3. 将以下行添加到/root/spark/conf/spark-defaults.confSpark master 上的 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

于 2015-08-09T18:15:02.727 回答
0

你可能没有/path/to/mysql-connector-java-5.1.23-bin.jar你的工人。
您可以将所需的依赖项复制到所有 spark 工作者或 Bundle the submitting jar with required dependencies.
我使用 Maven 来构建 jar。依赖的范围必须是运行时的。

于 2015-04-22T07:53:54.470 回答
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'

这适用于jobserver 1.6.1

于 2016-10-19T12:57:06.200 回答