com.amazon.ws.emr.had oop .fs.EmrFileSystem не найдена в скрипте PySpark на AWS EMR - PullRequest
1 голос
/ 02 августа 2020

Я пытаюсь создать кластер EMR, используя AWS CLI, чтобы запустить сценарий python (использует pyspark) следующим образом:

aws emr create-cluster --name "emr cluster for pyspark (test)"\
 --applications Name=Spark Name=Hadoop --release-label emr-5.25.0 --use-default-roles \
 --ec2-attributes KeyName=my-key --instance-groups \
 InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.xlarge \
 InstanceGroupType=CORE,InstanceCount=2,InstanceType=m4.xlarge \
 --bootstrap-actions Path="s3://mybucket/my_bootstrap.sh" --steps \
 Type=CUSTOM_JAR,Name="Spark Count group by QRACE",ActionOnFailure=CONTINUE\
 ,Jar=s3://us-east-2.elasticmapreduce/libs/script-runner/script-runner.jar,\
 Args=["s3://mybucket/my_step.py","s3://mybucket/my_input.txt","s3://mybucket/output"]\
 --log-uri "s3://mybucket/logs"

Сценарий bootstrap устанавливает Python3 .7 устанавливает pyspark (2.4.3) и устанавливает Java 8. Однако мой скрипт завершается с ошибкой:

y4j.protocol.Py4JJavaError: An error occurred while calling o32.csv.
: java.lang.RuntimeException: 
java.lang.ClassNotFoundException: Class com.amazon.ws.emr.hadoop.fs.EmrFileSystem not found

Я попытался добавить аргумент --configurations со следующим json в команду create-cluster (но это не помогло):

[
{
  "Classification":"spark-defaults",
  "Properties":{
    "spark.executor.extraClassPath":"/etc/hadoop/conf:/etc/hive/conf:/usr/lib/hadoop-lzo/lib/*:/usr/share/aws/aws-java-sdk/*:/usr/share/aws/emr/emrfs/conf:/usr/share/aws/emr/emrfs/lib/*:/usr/share/aws/emr/emrfs/auxlib/*",
    "spark.driver.extraClassPath":"/etc/hadoop/conf:/etc/hive/conf:/usr/lib/hadoop-lzo/lib/*:/usr/share/aws/aws-java-sdk/*:/usr/share/aws/emr/emrfs/conf:/usr/share/aws/emr/emrfs/lib/*:/usr/share/aws/emr/emrfs/auxlib/*"
  }
} 

]

Любые указатели на то, где я могу искать или что я могу сделать, были бы очень полезны !

РЕДАКТИРОВАТЬ: мне удалось исправить эту проблему, следуя советам @Lamanus. Но мое приложение PySpark, похоже, отлично работает на EMR 5.30.1, но не на EMR 5.25.0

Теперь я получаю следующую ошибку:

Exception in thread "main" org.apache.spark.SparkException: Application application_1596402225924_0001 finished with failed status
at org.apache.spark.deploy.yarn.Client.run(Client.scala:1148)
at org.apache.spark.deploy.yarn.YarnClusterApplication.start(Client.scala:1525)
at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:849)
at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:167)
at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:195)
at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:86)
at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:924)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:933)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

Я не уверен, куда обратиться поищите полезный отчет об ошибках / журнал о том, что пошло не так. Прекрасно работает с EMR-5.30.1 и Spark-2.4.5.

1 Ответ

0 голосов
/ 30 августа 2020

Обновление: это произошло из-за того, что сценарий bootstrap установил pyspark, хотя кластер уже был с ним.

...