ale*_*oid 0 amazon-web-services amazon-emr apache-spark
emr-5.20.0我尝试使用以下命令从 AWS EMR 主节点提交 Spark 应用程序:
spark-submit --executor-memory 4g --deploy-mode cluster --master yarn --class com.example.Application --properties-file config.conf s3://example-jobs/application.jar
Run Code Online (Sandbox Code Playgroud)
但它失败并出现以下错误:
Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: Class com.amazon.ws.emr.hadoop.fs.EmrFileSystem not found
Run Code Online (Sandbox Code Playgroud)
其原因在于以下参数:
--properties-file config.conf
Run Code Online (Sandbox Code Playgroud)
我做错了什么以及如何正确地将属性文件传递到 AWS EMR Apache Spark?
通过传递--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 左右,具体取决于集群中的实例类型。
| 归档时间: |
|
| 查看次数: |
5412 次 |
| 最近记录: |