使用S3DistCp从HDFS传输到S3时删除目录级别

Nol*_*nDC 5 hadoop amazon-s3 apache-pig hdfs emr

我有一个Pig脚本(使用稍微修改过的MultiStorage)来转换一些数据.脚本运行后,我在HDFS上有以下格式的数据:

/tmp/data/identifier1/indentifier1-0,0001  
/tmp/data/identifier1/indentifier1-0,0002  
/tmp/data/identifier2/indentifier2-0,0001  
/tmp/data/identifier3/indentifier3-0,0001
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用S3DistCp将这些文件复制到S3.我正在使用该--groupBy .*(identifier[0-9]).*选项根据标识符组合文件.组合有效,但复制到S3时,文件夹也会被复制.最终输出是:

/s3bucket/identifier1/identifier1
/s3bucket/identifier2/identifier2
/s3bucket/identifier3/identifier3
Run Code Online (Sandbox Code Playgroud)

有没有办法在没有第一个文件夹的情况下复制这些文件?理想情况下,我在S3中的输出看起来像:

/s3bucket/identifier1
/s3bucket/identifier2
/s3bucket/identifier3
Run Code Online (Sandbox Code Playgroud)

我考虑过的另一个解决方案是在复制到S3之前使用HDFS命令将这些文件从其目录中拉出.这是合理的解决方案吗?

谢谢!

Nol*_*nDC 3

我找到的解决方案是distcp在使用之前将这些文件从目录中取出s3distcp

hadoop distcp -update /tmp/data/** /tmp/grouped
Run Code Online (Sandbox Code Playgroud)

然后,我更改了s3distcp脚本以将数据移至/tmp/grouped我的 S3 存储桶中。