我正在使用spark-shell
,而我无法接收外部jars
。我在EMR中运行spark
。
我运行以下命令:
spark-shell --jars s3://play/emr/release/1.0/code.jar
我收到以下错误:
OpenJDK 64位服务器VM警告:忽略选项MaxPermSize = 512M;支持在8.0中删除 警告:跳过远程jar s3://play/emr/release/1.0/code.jar
提前致谢。
答案 0 :(得分:4)
这是Apache Spark本身的限制,而不是特别针对EMR的Spark。在客户端部署模式下运行Spark时(所有交互式shell,如spark-shell
或pyspark
或spark-submit
没有--deploy-mode cluster
或--master yarn-cluster
),只允许本地jar路径
原因是为了让Spark下载这个远程jar,它必须已经在运行Java代码,此时将jar添加到自己的类路径中为时已晚。
解决方法是在本地下载jar(使用AWS S3 CLI),然后在运行spark-shell或spark-submit时指定本地路径。
答案 1 :(得分:2)
您可以使用EMR框本身上的spark-shell命令行执行此操作:
spark-submit --verbose --deploy-mode cluster --class com.your.package.and.Class s3://bucket/path/to/thejar.jar 10
您也可以使用AWS Java EMR Client Library或AWS CLI调用此命令。关键是使用:' - deploy-mode cluster'
答案 2 :(得分:0)
有同样的问题,你可以添加“--master yarn --deploy-mode cluster”args,它可以让你远程执行s3 jar