我正在使用EMR使用fs.moveFromLocalFile API将文件夹从本地文件系统移动到Spark中的S3。一切正常,除了由EMRFS创建的0字节文件,名称为_ $ folder $,用于上传的每个文件夹。
有没有办法在没有为每个文件夹创建虚拟文件的情况下移动文件夹? (除了手动删除此文件)。另外,为什么要创建这个虚拟文件?我目前正在使用EMR团队推荐的s3://协议。
答案 0 :(得分:0)
我的经验是,通常调用本地文件系统或hdfs的mkdir()函数将导致使用mkdir文件夹的名称创建一个s3空文件,并附加_ $ folder $。在S3中,没有"空文件夹的概念"因为你不能拥有一个空值(文件)的密钥(路径名)。
在完美的世界中,mkdir(s3:// bucket / path)应该是noop。
答案 1 :(得分:0)
不了解EMR fs;这听起来像是S3n客户端使用的相同扩展名。列出/统计路径时,会在客户端中删除这些文件。
ASF的S3a创建一个带有“/”后缀的文件。