我正在尝试使用以下命令从AWS EMR emr-5.20.0主节点提交Spark申请:
spark-submit --executor-memory 4g --deploy-mode cluster --master yarn --class com.example.Application --properties-file config.conf s3://example-jobs/application.jar但它失败了,并显示以下错误:
Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: Class com.amazon.ws.emr.hadoop.fs.EmrFileSystem not found原因如下:
--properties-file config.conf我做错了什么?如何正确地将属性文件传递到AWS EMR Apache Spark?
发布于 2019-03-02 07:30:17
通过传递--properties-file,您完全覆盖了EMR在/etc/spark/conf/spark-defaults.conf中提供的许多缺省值,特别是错过了设置类路径以包含EMRFS jar的属性,而这正是导致您遇到的特定错误的原因。
您可以在集群创建时通过以下https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-configure.html配置Spark,而不是指定自己的完整属性文件。使用此方法配置Spark将导致您自己提供的值以及EMR默认提供的值出现在/etc/spark/conf/spark-defaults.conf中。您提供的值将覆盖EMR在此处提供的任何默认值。
对于任何不适合集群级别而是单个应用程序级别的配置,您可以使用以下内容将额外的配置传递给spark-submit:
spark-submit --conf KEY1=VALUE1 --conf KEY2=VALUE2 --executor-memory 4g --deploy-mode cluster --class ... --jar ... [args]
顺便说一句,您不需要指定--master yarn,因为这已经在/etc/spark/conf/spark-defaults.conf中指定了。此外,/etc/spark/conf/spark-defaults.conf中的默认执行器内存通常已经在4-5g左右,这取决于集群中的实例类型。
https://stackoverflow.com/questions/54925550
复制相似问题