Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以在S3中运行hadoop fs-getmerge吗?_Hadoop_Amazon S3_Elastic Map Reduce_Amazon Emr - Fatal编程技术网

可以在S3中运行hadoop fs-getmerge吗?

可以在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

我有一个弹性Map Reduce工作,它在S3中编写一些文件,我想连接所有文件以生成一个唯一的文本文件

目前,我正在手动将包含所有文件的文件夹复制到我们的HDFS(hadoop fs copyFromLocal),然后运行hadoop fs-getmerge和hadoop fs copyToLocal来获取文件


是否有直接在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] 一种简单的方法(如果您要生成适合主机的小文件)是执行以下操作:

  • 将文件部分合并到本地计算机()上的单个文件中

  • 将结果文件复制到S3,然后删除本地文件()


  • hadoop fs-getmerge
    只能合并到本地文件系统,而不能合并到s3
    hadoop fs -getmerge hdfs://[FILE] [LOCAL FILE]
    
    hadoop dfs -moveFromLocal [LOCAL FILE] s3n://bucket/key/of/file