apache-spark - 从 EMR 中的 S3 读取
问题描述
我无法从 EMR 读取存储在 AWS S3 上的存储桶中的 csv 文件。
我已经阅读了很多关于它的帖子,并做了以下工作来使它工作:
- 添加允许对 s3 进行读写访问的 IAM 策略
- 尝试在 spark-submit 请求的 Argument 部分传递 uri
我认为在普通帐户上从 EMR 查询 S3 很简单(因为它在定义文件系统并提供 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 吗?
解决方案
推荐阅读
- c# - 无法从 emgucv 中的视频中检测到人脸
- vba - VBA 查找和读取多个范围
- firebase - 如何在 Google Chrome 扩展程序的后台收听 Firebase 云消息传递消息?
- html - 滚动带有视频的页面时HTML元素消失
- python - 如何处理: ImportError: /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0: undefined symbol: g_log_structured_standard
- java - 带有许多参数的 GET 方法 by rest
- react-native - 未定义不是对象(评估 '_reactNativeCamer.RNCamera.Constants'
- vba - 如何将包含某些文本的单元格复制到另一个工作表
- c - 多客户端服务器:quitfunction
- regex - 正则表达式:在 url 中查找用户名