EMR在使用HDFS的moveFromLocalFile API

时间:2016-12-22 12:03:50

标签: amazon-web-services apache-spark amazon-s3 emr amazon-emr

我正在使用EMR使用fs.moveFromLocalFile API将文件夹从本地文件系统移动到Spark中的S3。一切正常,除了由EMRFS创建的0字节文件,名称为_ $ folder $,用于上传的每个文件夹。

有没有办法在没有为每个文件夹创建虚拟文件的情况下移动文件夹? (除了手动删除此文件)。另外,为什么要创建这个虚拟文件?我目前正在使用EMR团队推荐的s3://协议。

2 个答案:

答案 0 :(得分:0)

我的经验是,通常调用本地文件系统或hdfs的mkdir()函数将导致使用mkdir文件夹的名称创建一个s3空文件,并附加_ $ folder $。在S3中,没有"空文件夹的概念"因为你不能拥有一个空值(文件)的密钥(路径名)。

在完美的世界中,mkdir(s3:// bucket / path)应该是noop。

答案 1 :(得分:0)

不了解EMR fs;这听起来像是S3n客户端使用的相同扩展名。列出/统计路径时,会在客户端中删除这些文件。

ASF的S3a创建一个带有“/”后缀的文件。