1

클러스터가 가동 중입니다. 내 코드를 실행하는 단계를 추가하려고합니다. 코드 자체는 단일 인스턴스에서 올바르게 작동합니다. S3에서 작동하도록 할 수는 없습니다.S3에서 amazon emr spark submission이 작동하지 않습니다.

aws emr add-steps --cluster-id j-XXXXX --steps Type=spark,Name=SomeSparkApp,Args=[--deploy-mode,cluster,--executor-memory,0.5g,s3://<mybucketname>/mypythonfile.py] 

정확히 내가해야하는 예입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

오류 내가 얻을 :

Exception in thread "main" java.lang.IllegalArgumentException: Unknown/unsupported param List(--executor-memory, 0.5g, --executor-cores, 2, --primary-py-file, s3://<mybucketname>/mypythonfile.py, --class, org.apache.spark.deploy.PythonRunner) 

Usage: org.apache.spark.deploy.yarn.Client [options] 
Options: 
    --jar JAR_PATH   Path to your application's JAR file (required in yarn-cluster 
          mode) 
    . 
    . 
    . 
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121) 
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 
Command exiting with ret '1' 

나는이 대신으로 지정 : 내가 대신이 오류가

aws emr add-steps --cluster-id j-XXXXX --steps Type=spark,Name= SomeSparkApp,Args=[--executor-memory,0.5g,s3://<mybucketname>/mypythonfile.py] 

을 :

Error: Only local python files are supported: Parsed arguments: 
    master     yarn-client 
    deployMode    client 
    executorMemory   0.5g 
    executorCores   2 

편집 : IT 때 함께 더 얻는다 I SSH를 클러스터에 넣은 후 수동으로 파이썬 파일을 만들고 다음과 같이 지정하십시오 :

aws emr add-steps --cluster-id 'j-XXXXX' --steps Type=spark,Name= SomeSparkApp,Args=[--executor-memory,1g,/home/hadoop/mypythonfile.py] 

하지만 일을하지 마십시오.

도움을 주시면 감사하겠습니다. AWS 자신의 블로그에 잘 문서화 된 방법으로 여기서 https://blogs.aws.amazon.com/bigdata/post/Tx578UTQUV7LRP/Submitting-User-Applications-with-spark-submit이 작동하지 않아서 정말 실망 스럽습니다.

+0

EMR 클러스터에 'S3'에 액세스 할 수있는 적절한 IAM 권한이 있습니까? – Kristian

+1

예, S3에서 부팅 스트랩 작업을 할 수 있습니다. 그 부분은 성공합니다. BTW - 내가 GUI를 사용할 때, 그것은 효과가 있었다. 정말 좌절 했어. :) – Gopala

+0

DId 혹시 이것을 알아 냈습니까? 우리는 같은 문제에 직면 해있다. 로컬 FS에서 병을 사용하면 작동합니다. S3를 통해 하나 전달하면 실패합니다. – luckytaxi

답변

1

정확한 버그와 클러스터 ID를 사용했는지 묻습니다.

하지만 어쨌든, S3에서 읽을 때 --deploy-mode,cluster을 사용할 수없는 것처럼 비슷한 문제가있었습니다. 인수에서 --deploy-mode,client,--master,local[4]을 사용하면 효과가 있다고 생각합니다. 하지만 난 아직도 정확히 기억할 수없는 다른 무언가를 필요로 생각하지만, 나는이 같은 솔루션에 의존 :

aws s3 cp s3://<mybucket>/wordcount.py wordcount.py 

:

는 첫째, 내가 쉘 스크립트 명령을 실행하는 부트 스트랩 작업을 사용 그리고 내 이동 응용 프로그램에서 SDK를 통해 클러스터 작성에 단계를 추가 할 수 있지만 나는이 정보를 채취하고이 같은 CLI 명령을 제공 할 수 있습니다 :

aws emr add-steps --cluster-id j-XXXXX --steps Type=CUSTOM_JAR,Name="Spark Program",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=["spark-submit",--master,local[4],/home/hadoop/wordcount.py,s3://<mybucket>/<inputfile.txt> s3://<mybucket>/<outputFolder>/] 
0

내가 일을 검색하고 마지막 상태 this thread 발견을

PySpark는 현재 로컬 파일 만 지원합니다. 이것은 로컬 모드에서만 실행된다는 것을 의미하지는 않습니다. 은 (클라이언트 모드에서만) 모든 클러스터 관리자에서 PySpark를 계속 실행할 수 있습니다. 모두 이것은 파이썬 파일이 로컬 파일 시스템에 있어야한다는 것을 의미합니다. 이것이 지원 될 때까지 간단한 해결 방법은 파일을 로컬 컴퓨터에 복사하는 것입니다.

관련 문제