s3distcp的多个源文件

kpbwa7wx  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(455)

有没有办法用s3distcp将文件列表从s3复制到hdfs而不是完整的文件夹?这是srcpattern无法工作的时候。
我有一个s3文件夹上的多个文件都有不同的名称。我只想将特定文件复制到hdfs目录。我没有找到任何方法来指定多个源文件到s3distcp的路径。
我目前使用的解决方法是告诉srcpattern中的所有文件名

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

当文件太多的时候,这个东西能工作吗?大约一万?

3hvapo4f

3hvapo4f1#

是的,你可以。创建一个包含所有需要的文件的清单文件,并使用这里提到的--copyfrommanifest选项

hivapdat

hivapdat2#

hadoop distcp应该可以解决您的问题。我们可以使用distcp将数据从s3复制到hdfs。
它还支持通配符,我们可以在命令中提供多个源路径。
http://hadoop.apache.org/docs/r1.2.1/distcp.html
浏览此特定url中的用法部分
示例:假设您在test1文件夹中的s3 bucket(testbucket)中有以下文件。

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/

相关问题