我尝试使用S3DistCp
来解决Hadoop中的小文件问题。它正在工作,但输出有点烦人。我正在处理的文件路径如下:
s3://test-bucket/test/0000eb6e-4460-4b99-b93a-469d20543bf3/201402.csv
并且该文件夹中可以有多个文件。我想按文件夹名称分组,所以我在s3distcp中使用以下group by参数:
--groupBy '.*(........-.........-....-............).*'
它确实对文件进行分组,但结果仍然会导致多个输出文件夹,每个文件夹中只有一个文件。有没有办法将分组文件输出到一个文件夹而不是多个?
谢谢!
答案 0 :(得分:2)
截至2015-11-20,这是S3DistCp的行为。它将根据源目录创建多个目录。它不会跨目录组合。
答案 1 :(得分:1)
我想你可以尝试这个:
--groupBy ".*/(........-.........-....-............)/.*"
在您的示例中,您应该使用以下内容:--src "s3://test-bucket/test/"
通过这种方式,您将拥有多个文件夹,这些文件夹中的所有文件都合并在一起。