s3distcp的多个源文件

时间:2014-10-09 07:58:22

标签: hadoop amazon-web-services amazon-s3 hdfs distcp

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

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

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

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

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

2 个答案:

答案 0 :(得分:4)

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

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

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

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

实施例: 考虑在test1文件夹中的s3 bucket(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/

答案 1 :(得分:2)

是的,你可以。创建一个包含您需要的所有文件的清单文件,然后使用--copyFromManifest选项here