首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用spark优化S3到S3的转换

使用spark优化S3到S3的转换
EN

Stack Overflow用户
提问于 2018-04-15 23:51:46
回答 2查看 3.6K关注 0票数 1

我正在学习spark/scala,并尝试使用scala语言尝试下面的场景。场景:从一个S3存储桶文件夹复制多个文件到另一个S3存储桶文件夹。

到目前为止所做的事情:

1)使用亚马逊网络服务S3开发工具包和scala:-从S3源位置创建文件列表。-遍历列表,传递步骤1中的源和目标S3位置,并使用S3接口copyObject将这些文件复制到目标位置(已配置)。这是可行的。

但是,我想知道,如果我在多个文件夹中有大量文件,这是最有效的方法吗?或者我可以使用spark来并行处理这个文件副本吗?

我想的方法是:

1)使用S3 SDK获取与上面类似的源路径

2)使用sc.parallelize()为每个文件创建一个RDD -下面这几行?sc.parallelize(objs.getObjectSummaries.map(_.getKey).toList) .flatMap { key => Source.fromInputStream(s3.getObject(bucket, key).getObjectContent: InputStream).getLines }

3)我能以某种方式使用sc.wholeTextFiles来实现这一点吗?到目前为止,我不确定如何实现这一点。

你能帮助我理解我是否在思考正确的方向,以及这种方法是否正确?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2018-04-16 03:12:45

不过,我认为AWS并没有让事情变得复杂。

我们也有同样的问题,我们在10分钟内传输了大约2TB的数据。

如果您想从一个存储桶传输到另一个存储桶,最好在s3内部使用内置功能进行传输。

https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

AWS CLI命令示例:

aws s3同步s3://源存储桶s3://目标存储桶

如果你想以编程的方式完成,你可以使用所有的SDK来调用相同类型的命令。我会避免重复发明同样的轮子。

希望能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2018-04-16 23:49:37

我有一个代码片段,cloudCp,它使用spark进行高性能的并行上传;它类似于为copy做一些事情,在那里你可以将该操作放到AWS lib中。

但是:您可能不需要将工作推送到许多机器上,因为每个PUT/x-copy-source调用都可能很慢,但它不会占用任何带宽。您可以启动一个具有许多线程的进程&一个大型HTTP客户端池,然后在该进程中运行所有线程。获取列表,首先按最大的几个排序,然后随机打乱其余的,以减少节流效应。打印计数器以帮助分析...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49843855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档