可以在S3中运行hadoop fs-getmerge吗?
我有一个弹性Map Reduce工作,它在S3中编写一些文件,我想连接所有文件以生成一个唯一的文本文件 目前,我正在手动将包含所有文件的文件夹复制到我们的HDFS(hadoop fs copyFromLocal),然后运行hadoop fs-getmerge和hadoop fs copyToLocal来获取文件可以在S3中运行hadoop fs-getmerge吗?,hadoop,amazon-s3,elastic-map-reduce,amazon-emr,Hadoop,Amazon S3,Elastic Map Reduce,Amazon Emr,我有一个弹性Map Reduce工作,它在S3中编写一些文件,我想连接所有文件以生成一个唯一的文本文件 目前,我正在手动将包含所有文件的文件夹复制到我们的HDFS(hadoop fs copyFromLocal),然后运行hadoop fs-getmerge和hadoop fs copyToLocal来获取文件 是否有直接在S3上使用hadoop fs的方法?我自己没有尝试过getmerge命令,但是EMR集群节点上的hadoop fs命令支持S3路径,就像HDFS路径一样。例如,您可以通过SS
是否有直接在S3上使用hadoop fs的方法?我自己没有尝试过getmerge命令,但是EMR集群节点上的hadoop fs命令支持S3路径,就像HDFS路径一样。例如,您可以通过SSH连接到集群的主节点并运行:
hadoop fs -ls s3://<my_bucket>/<my_dir>/
hadoop fs-ls s3:////
上面的命令将列出指定目录路径下的所有S3对象
我希望hadoop fs-getmerge也能以同样的方式工作。因此,只需使用完整的S3路径(从S3://)而不是HDFS路径。实际上,关于getmerge的这个响应是不正确的。getmerge需要一个本地目标,不能与S3一起使用。如果您尝试并使用-getmerge:error-FS:响应,它将抛出一个
IOException
用法:
hadoop fs [generic options] -getmerge [-nl] <src> <localdst>
hadoop fs[通用选项]-getmerge[-nl]
一种简单的方法(如果您要生成适合主机的小文件)是执行以下操作:
hadoop fs-getmerge
只能合并到本地文件系统,而不能合并到s3
hadoop fs -getmerge hdfs://[FILE] [LOCAL FILE]
hadoop dfs -moveFromLocal [LOCAL FILE] s3n://bucket/key/of/file