Чтение из S3 в EMR

#apache-spark #amazon-s3 #pyspark #amazon-emr

#apache-spark #amazon-s3 #pyspark #amazon-emr

Вопрос:

У меня возникли проблемы с чтением CSV-файлов, хранящихся в моей корзине на AWS S3, из EMR.

Я прочитал довольно много сообщений об этом и сделал следующее, чтобы это заработало :

  • Добавьте политику IAM, разрешающую доступ для чтения и записи к s3
  • Пытался передать uri в разделе аргументов запроса spark-submit

Я думал, что запрос S3 из EMR в общей учетной записи был простым (потому что он работает локально после определения файловой системы и предоставления учетных данных aws), но когда я запускаю :

 df = spark.read.option("delimiter", ",").csv("s3://{0}/{1}/*.csv".format(bucket_name, power_prod_key), header = True)
  

Ничего не происходит, нет никаких исключений, кластер продолжает работать, но после этой строки ничего не будет выполнено (я также пытался указать файл вместо «*.csv», но он делает то же самое).

Я создал кластер с помощью консоли aws, но вот экспортированный интерфейс командной строки :

 aws emr create-cluster 
  --applications Name=Hadoop Name=Hive Name=Pig Name=Hue Name=Spark  
  --ec2-attributes '{"InstanceProfile":"EMR_EC2_DefaultRole","SubnetId":"subnet-3482b47e","EmrManagedSlaveSecurityGroup":"sg-05c284d83c1307807","EmrManagedMasterSecurityGroup":"sg-01cd4e90f09dff3ad"}' 
  --release-label emr-5.21.0 
  --log-uri 's3n://aws-logs-597071303168-us-east-1/elasticmapreduce/' 
  --steps '[{"Args":["spark-submit","--deploy-mode","cluster","--py-files","s3://powercaster-bct/code/func.zip","s3://powercaster-bct/code/PowerProdPrediction.py","s3://powercaster-bct/power-production/*.csv","s3://powercaster-bct/results/rnd-frst-predictions.csv","s3://powercaster-bct/results/rnd-frst-target.csv"],"Type":"CUSTOM_JAR","ActionOnFailure":"TERMINATE_CLUSTER","Jar":"command-runner.jar","Properties":"","Name":"Spark application"}]' 
  --instance-groups '[{"InstanceCount":1,"EbsConfiguration":{"EbsBlockDeviceConfigs":[{"VolumeSpecification":{"SizeInGB":32,"VolumeType":"gp2"},"VolumesPerInstance":1}]},"InstanceGroupType":"MASTER","InstanceType":"m4.large","Name":"Master - 1"}]' 
  --configurations '[{"Classification":"spark-env","Properties":{},"Configurations":[{"Classification":"export","Properties":{"PYSPARK_PYTHON":"/usr/bin/python3"}}]}]' 
  --auto-terminate 
  --auto-scaling-role EMR_AutoScaling_DefaultRole 
  --ebs-root-volume-size 10 
  --service-role EMR_DefaultRole 
  --enable-debugging 
  --name 'My cluster' 
  --scale-down-behavior TERMINATE_AT_TASK_COMPLETION 
  --region us-east-1
  

Должен ли я предоставить какую-то конкретную конфигурацию hadoop для определения файловой системы или каким-то образом предоставить свои учетные данные?

Есть идеи, почему я не могу связать S3 с EMR?

Комментарии:

1. Можете, пожалуйста, поделиться своими логами emr

2. При использовании интерактивной оболочки и чтении некоторых файлов (текст / паркет / что угодно) жалуется ли он?

3. @vaquarkhan какие журналы? Консоль предоставляет множество различных категорий журналов: контейнеры /, узлы /, шаги/

4. @Bala Я никогда не использовал интерактивную оболочку, я просто развертываю кластер в пошаговом режиме выполнения, чтобы выполнить некоторый тест. Я не знаю, как это работает

5. Я рекомендую вам войти в систему на главном узле (ssh), запустить интерактивную оболочку, выполнить ваши команды и посмотреть, выдает ли она какие-либо ошибки. Вы получаете какие-либо ошибки вообще?