У меня проблемы с чтением CSV-файлов, хранящихся в моем хранилище на AWS S3 из EMR.
Я прочитал довольно много сообщений об этом и сделал следующее, чтобы заставить его работать:
- Добавить политику IAM, разрешающую чтение и запись, доступ к s3
- Попытка передать Uris в разделе Argument запроса на подачу искры
Я думал, что запрос S3 из EMR для общей учетной записи был простым (поскольку он работает локально после определения fileSystem и предоставления учетных данных aws), но когда я запускаю:
df = spark.read.option("delimiter", ",").csv("s3://{0}/{1}/*.csv".format(bucket_name, power_prod_key), header = True)
Ничего не происходит, исключений нет, кластер продолжает работать, но после этой строки ничего не будет выполнено (я также попытался указать файл вместо "* .csv", но он делает то же самое).
Я создал кластер с помощью консоли aws, но вот экспортированный cli:
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?