我正在尝试在AWS上的Spark on DC / OS上运行批处理。对于每个批处理过程,我在发送提交时都会发送一些特定的参数(例如,用户可以执行批处理)。
我在DC / OS上有一个Spark群集,有一个主节点和3个私有节点。
我创建了一个application.conf
文件并将其上传到S3,并启用了访问该文件的权限。
我的spark submit命令如下所示:
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文件的错误:
线程“main”中的异常com.typesafe.config.ConfigException $ Missing:找不到键'wattio-batch'的配置设置 在com.typesafe.config.impl.SimpleConfig.findKey(SimpleConfig.java:124) 在com.typesafe.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) at com.enerbyte.spark.jobs.wattiobatch.WattioBatchJob $ .main(WattioBatchJob.scala:31) at com.enerbyte.spark.jobs.wattiobatch.WattioBatchJob.main(WattioBatchJob.scala) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) 在org.apache.spark.deploy.SparkSubmit $ .org $ apache $ spark $ deploy $ SparkSubmit $$ runMain(SparkSubmit.scala:786) 在org.apache.spark.deploy.SparkSubmit $ .doRunMain $ 1(SparkSubmit.scala:183) 在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文件)?
谢谢
答案 0 :(得分:0)
我没有成功从spark submit命令发送conf文件,但我所做的是使用以下方法在程序开头硬编码application.conf文件的位置:
System.setProperty("config.url", "https://s3_location/application.conf")
ConfigFactory.invalidateCaches()
这样,程序每次启动时都能读取application.conf文件。