pyspark 如何在AWS EMR中使用自己的jar作为依赖项

mwkjh3gx  于 2024-01-06  发布在  Spark
关注(0)|答案(1)|浏览(160)

我正在向EMR集群提交一个Spark驱动程序,它需要使用我上传的jar,所以mu代码如下:

  1. boto3.client("emr-containers").start_job_run(
  2. name=job_name,
  3. virtualClusterId=self.virtual_cluster_id,
  4. releaseLabel="emr-6.11.0-latest",
  5. executionRoleArn=role,
  6. jobDriver={
  7. "sparkSubmitJobDriver": {
  8. "entryPoint": entry_point,
  9. "entryPointArguments": entry_point_args,
  10. "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',
  11. }
  12. },
  13. )

字符串
但这会导致EMR抛出一个异常:

  1. Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: Class com.amazon.ws.emr.hadoop.fs.EmrFileSystem not found


根据stackoverflow中的文档和其他一些帖子,我怀疑这是因为我的driver-class-pathjars参数覆盖了EMR的默认设置。那么,为了在EMR中使用我自己的jar并避免上述问题,我应该解析哪些参数到EMR?

aamkag61

aamkag611#

在EMR Serverless上,您可以像这样在sparkSubmitParameters中添加jar:--conf spark.jars=s3://my-bucket/multiple-jars/*。我怀疑EKS链接上的EMR应该类似

相关问题