getmerge

mklgxw1f  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(677)

如何使用dataproc上的getmerge处理转储到google存储桶的部分文件。如果我试试这个 hadoop fs -getmerge gs://my-bucket/temp/part-* gs://my-bucket/temp_merged 我出错了 getmerge: /temp_merged (Permission denied) 对我来说很管用 hadoop fs -getmerge gs://my-bucket/temp/part-* temp_merged 当然,这会将合并的文件写入集群计算机,而不是gs。

f3temu5u

f3temu5u1#

根据fsshell文档 getmerge 命令基本上将目标路径视为“本地”路径(因此在 gs://my-bucket/temp_merged 它忽略了“scheme”和“authority”组件,试图直接写入本地文件系统路径 /temp_meged ; 这并非特定于地面军事系统连接器;如果你尝试,你也会看到同样的结果 hadoop fs -getmerge gs://my-bucket/temp/part-* hdfs:///temp_merged ,更糟的是,如果你尝试 hadoop fs -getmerge gs://my-bucket/temp/part-* hdfs:///tmp/temp_merged ,您可能认为它成功了,而实际上文件没有出现在 hdfs:///tmp/temp_merged ,但却出现在本地文件系统下, file:///tmp/temp_merged .
相反,您可以使用管道stdout/stdin来实现它;不幸的是 -getmerge 他跟我玩得不好 /dev/stdout 由于的权限和用法 .crc 但使用中的功能可以实现相同的效果 hadoop fs -put 支持从stdin读取:

hadoop fs -cat  gs://my-bucket/temp/part-* | \
    hadoop fs -put - gs://my-bucket/temp_merged

相关问题