找不到AWS EMR Spark --properties-file类com.amazon.ws.emr.hadoop.fs.EmrFileSystem

时间:2019-02-28 12:16:42

标签: amazon-web-services apache-spark amazon-emr

我正在尝试使用以下命令从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?

1 个答案:

答案 0 :(得分:1)

通过传递--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左右,具体取决于集群中的实例类型。