1

我正在尝试在 AWS 上的 DC/OS 上的 Spark 中运行批处理。对于每个批处理,我在执行 spark 提交时发送了一些特定参数(例如,哪些用户执行批处理)。

我在 DC/OS 上有一个 Spark 集群,有一个主节点和 3 个私有节点。

我创建了一个application.conf文件并将其上传到 S3,并启用了访问该文件的权限。

我的 spark 提交命令如下所示:

dcos spark run --submit-args='-Dspark.mesos.coarse=true --driver-class-path https://path_to_the_folder_root_where_is_the_file --conf spark.driver.extraJavaOptions=-Dconfig.file=application.conf --conf spark.executor.extraJavaOptions=-Dconfig.file=application.conf --class class_name jar_location_on_S3'

我得到了 job.properties 文件未找到的错误:

线程“主”com.typesafe.config.ConfigException$Missing 中的异常:在 com.typesafe 的 com.typesafe.config.impl.SimpleConfig.findKey(SimpleConfig.java:124) 中找不到键“wattio-batch”的配置设置.config.impl.SimpleConfig.find(SimpleConfig.java:145) 在 com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:159) 在 com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java :164) 在 com.typesafe.config.impl.SimpleConfig.getObject(SimpleConfig.java:218) 在 com.typesafe.config.impl.SimpleConfig.getConfig(SimpleConfig.java:224) 在 com.typesafe.config.impl。 SimpleConfig.getConfig(SimpleConfig.java:33) 在 com.enerbyte.spark.jobs.wattiobatch.WattioBatchJob$.main(WattioBatchJob.scala:31) 在 com.enerbyte.spark.jobs.wattiobatch.WattioBatchJob.main(WattioBatchJob.scala) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect .Method.invoke(Method.java:498) at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:786) at org.apache.spark.deploy .SparkSubmit$.doRunMain$1(SparkSubmit.scala:183) at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:208) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala :123) 在 org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.spark.deploy.SparkSubmit $.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:786) at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:183) at org.apache.spark.deploy .SparkSubmit$.submit(SparkSubmit.scala:208) 在 org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:123) 在 org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.spark.deploy.SparkSubmit $.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:786) at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:183) at org.apache.spark.deploy .SparkSubmit$.submit(SparkSubmit.scala:208) 在 org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:123) 在 org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:786) at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:183) at org.apache.spark.deploy.SparkSubmit $.submit(SparkSubmit.scala:208) 在 org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:123) 在 org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:786) at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:183) at org.apache.spark.deploy.SparkSubmit $.submit(SparkSubmit.scala:208) 在 org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:123) 在 org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

如何正确设置?虽然其中一个私有从站执行驱动程序,但它是否可以访问 Internet(是否可以进入 S3 并下载 conf 文件)?

谢谢

4

1 回答 1

0

我没有成功从 spark submit 命令发送 conf 文件,但我所做的是在我的程序开头使用以下命令硬编码 application.conf 文件的位置:

System.setProperty("config.url", "https://s3_location/application.conf") ConfigFactory.invalidateCaches()

这样,程序每次启动时都能读取 application.conf 文件。

于 2016-05-19T18:00:18.017 回答