EMR 如何处理用于输入和输出的 s3 存储桶?
How does EMR handle an s3 bucket for input and output?
我正在启动一个 EMR 集群,并且我已经创建了指定的存储桶 in the EMR docs,但是我应该如何上传数据并从中读取数据?在我的 spark 提交步骤中,我说脚本名称使用 s3://myclusterbucket/scripts/script.py
输出不会自动上传到 s3 吗?如何处理依赖关系?我尝试使用指向 s3 存储桶内的依赖项 zip 的 pyfiles,但不断返回 'file not found'
EMR 中的 MapReduce 或 Tez 作业可以直接访问 S3,因为 EMRFS(一种基于 S3 的 AWS 专有 Hadoop 文件系统实现),例如,在 Apache Pig 中你可以这样做
loaded_data = LOAD 's3://mybucket/myfile.txt' USING PigStorage();
不确定基于 Python 的 Spark 作业。但一种解决方案是先将对象从 S3 复制到 EMR HDFS,然后在那里进行处理。
复制有多种方式:
使用hadoop fs
命令将对象从S3复制到EMR HDFS(反之亦然),例如hadoop fs -cp s3://mybucket/myobject hdfs://mypath_on_emr_hdfs
使用 s3-dist-cp 将对象从 S3 复制到 EMR HDFS(反之亦然)http://docs.aws.amazon.com/emr/latest/ReleaseGuide/UsingEMR_s3distcp.html
您也可以使用awscli(或hadoop fs -copyToLocal
)将对象从S3复制到EMR主实例本地磁盘(反之亦然),例如aws s3 cp s3://mybucket/myobject .
我正在启动一个 EMR 集群,并且我已经创建了指定的存储桶 in the EMR docs,但是我应该如何上传数据并从中读取数据?在我的 spark 提交步骤中,我说脚本名称使用 s3://myclusterbucket/scripts/script.py
输出不会自动上传到 s3 吗?如何处理依赖关系?我尝试使用指向 s3 存储桶内的依赖项 zip 的 pyfiles,但不断返回 'file not found'
EMR 中的 MapReduce 或 Tez 作业可以直接访问 S3,因为 EMRFS(一种基于 S3 的 AWS 专有 Hadoop 文件系统实现),例如,在 Apache Pig 中你可以这样做
loaded_data = LOAD 's3://mybucket/myfile.txt' USING PigStorage();
不确定基于 Python 的 Spark 作业。但一种解决方案是先将对象从 S3 复制到 EMR HDFS,然后在那里进行处理。
复制有多种方式:
使用
hadoop fs
命令将对象从S3复制到EMR HDFS(反之亦然),例如hadoop fs -cp s3://mybucket/myobject hdfs://mypath_on_emr_hdfs
使用 s3-dist-cp 将对象从 S3 复制到 EMR HDFS(反之亦然)http://docs.aws.amazon.com/emr/latest/ReleaseGuide/UsingEMR_s3distcp.html
您也可以使用awscli(或hadoop fs -copyToLocal
)将对象从S3复制到EMR主实例本地磁盘(反之亦然),例如aws s3 cp s3://mybucket/myobject .