Apache spark 将文件副本分发给执行者

Apache spark 将文件副本分发给执行者,apache-spark,hadoop,hdfs,amazon-emr,distcp,Apache Spark,Hadoop,Hdfs,Amazon Emr,Distcp,我有一堆数据(在S3上),我正在复制到本地HDFS(在AmazonEMR上)。现在我正在使用org.apache.hadoop.fs.FileUtil.copy,但是不清楚这是否会将文件副本分发给执行者。Spark历史服务器中肯定没有显示任何内容 HadoopDistCp似乎是这样(注意我在S3上,所以实际上它应该是构建在DistCp之上的S3 dist cp),但它是命令行工具。我正在寻找一种从Scala脚本(又名Java)调用它的方法 任何想法/线索?是使用Spark进行复制的一个例子;文件

我有一堆数据(在S3上),我正在复制到本地HDFS(在AmazonEMR上)。现在我正在使用
org.apache.hadoop.fs.FileUtil.copy
,但是不清楚这是否会将文件副本分发给执行者。Spark历史服务器中肯定没有显示任何内容

Hadoop
DistCp
似乎是这样(注意我在S3上,所以实际上它应该是构建在
DistCp
之上的
S3 dist cp
),但它是命令行工具。我正在寻找一种从Scala脚本(又名Java)调用它的方法

任何想法/线索?

是使用Spark进行复制的一个例子;文件列表转换为RDD,每行==一个副本。该设计针对从HDFS上传进行了优化,因为它试图将上传安排在接近HDFS中文件的位置

要下载,您需要

  • 使用listFiles(path,recursive)在列出对象存储时获得最大性能
  • 随机化源文件列表,这样您就不会被AWS限制
  • 在整个HDFS簇中随机化放置,以便块最终均匀地散布在簇周围

看看Hadoop工具的单元测试,看看如何以编程的方式使用它,我会尝试一下。没什么可做的:毕竟这只是CLI上的一个火花作业