【发布时间】:2018-04-16 23:49:37
【问题描述】:
我正在学习 spark/scala 并尝试使用 scala 语言尝试以下场景。 场景:将多个文件从一个 S3 存储桶文件夹复制到另一个 S3 存储桶文件夹。
到目前为止所做的事情:
1)使用AWS S3 SDK和scala:
- 从 S3 源位置创建文件列表。
- 遍历列表,传递步骤 1 中的源和目标 S3 位置,并使用 S3 API 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 来完成这项工作吗?
到目前为止,我不确定如何实现这一目标。
您能否帮助我了解我的想法是否正确以及这种方法是否正确?
谢谢
【问题讨论】:
标签: scala amazon-web-services apache-spark amazon-s3 sdk