0

有没有办法将文件列表从 S3 复制到 hdfs而不是使用 s3distcp 的完整文件夹?这是 srcPattern 无法工作的时候。

我在 s3 文件夹中有多个文件,它们都有不同的名称。我只想将特定文件复制到 hdfs 目录。我没有找到任何方法来指定 s3distcp 的多个源文件路径。

我目前使用的解决方法是告诉 srcPattern 中的所有文件名

hadoop jar s3distcp.jar
    --src s3n://bucket/src_folder/
    --dest hdfs:///test/output/
    --srcPattern '.*somefile.*|.*anotherone.*'

当文件数量太多时,这个东西可以工作吗?大约10 000?

4

2 回答 2

4

hadoop distcp 应该可以解决您的问题。我们可以使用 distcp 将数据从 s3 复制到 hdfs。

它还支持通配符,我们可以在命令中提供多个源路径。

http://hadoop.apache.org/docs/r1.2.1/distcp.html

浏览此特定网址中的使用部分

示例:假设您在 test1 文件夹内的 s3 存储桶(test-bucket)中有以下文件。

abc.txt
abd.txt
defg.txt

在 test2 文件夹中你有

hijk.txt
hjikl.txt
xyz.txt

而你的 hdfs 路径是hdfs://localhost.localdomain:9000/user/test/

然后 distcp 命令针对特定模式如下。

hadoop distcp s3n://test-bucket/test1/ab*.txt \ s3n://test-bucket/test2/hi*.txt hdfs://localhost.localdomain:9000/user/test/
于 2014-10-21T11:48:17.603 回答
3

是的你可以。使用您需要的所有文件创建一个清单文件,并使用此处提到的 --copyFromManifest 选项

于 2014-12-08T17:30:53.443 回答