我正在向EMR集群提交一个Spark驱动程序,它需要使用我上传的jar,所以mu代码如下:
boto3.client("emr-containers").start_job_run(
name=job_name,
virtualClusterId=self.virtual_cluster_id,
releaseLabel="emr-6.11.0-latest",
executionRoleArn=role,
jobDriver={
"sparkSubmitJobDriver": {
"entryPoint": entry_point,
"entryPointArguments": entry_point_args,
"sparkSubmitParameters": '--driver-class-path s3://my_bucket/mysql-connector-j-8.0.32.jar --jars s3://my_bucket/mysql-connector-j-8.0.32.jar --conf spark.kubernetes.driver.podTemplateFile=my_file.yaml --conf spark.kubernetes.executor.podTemplateFile=my_file.yaml',
}
},
)
字符串
但这会导致EMR抛出一个异常:
Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: Class com.amazon.ws.emr.hadoop.fs.EmrFileSystem not found
型
根据stackoverflow中的文档和其他一些帖子,我怀疑这是因为我的driver-class-path
和jars
参数覆盖了EMR的默认设置。那么,为了在EMR中使用我自己的jar并避免上述问题,我应该解析哪些参数到EMR?
1条答案
按热度按时间aamkag611#
在EMR Serverless上,您可以像这样在
sparkSubmitParameters
中添加jar:--conf spark.jars=s3://my-bucket/multiple-jars/*
。我怀疑EKS链接上的EMR应该类似